亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2915 | 回復: 3
打印 上一主題 下一主題

aligned屬性【已解決】 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-09-17 13:54 |只看該作者 |倒序瀏覽
本帖最后由 crazyhadoop 于 2011-09-20 18:22 編輯

為什么aligned屬性好像沒有作用的? pragma pack就ok的?

  1. #include<stdio.h>

  2. struct my_struct{
  3.         char a;
  4.         char b;
  5.         int c ;
  6. }__attribute__((aligned(2)));

  7. /*
  8. #pragma pack(2) //ok!!
  9. struct my_struct{
  10.         char a;
  11.         char b;
  12.         int c;
  13. };
  14. #pragma pack()
  15. */
  16. int main (int argc, char** argv)
  17. {
  18.         printf("size=%d\n",sizeof(struct my_struct));
  19.         struct my_struct temp;
  20.         printf("0x%x \n0x%x \n0x%x\n",&temp.a,&temp.b,&temp.c);
  21.         return 0;
  22. }
復制代碼
打印:
size=8
0xbfbdc28c
0xbfbdc28d
0xbfbdc290

如果按aligned(2),應該是:
size=6     ??
0xbfbdc28c
0xbfbdc28d
0xbfbdc29e ??

論壇徽章:
95
程序設計版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設計版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農
日期:2015-10-19 19:43:35程序設計版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
2 [報告]
發(fā)表于 2011-09-18 10:38 |只看該作者
為什么aligned屬性好像沒有作用的? pragma pack就ok的?打。
Horizon2012 發(fā)表于 2011-09-17 13:54

  1. struct my_struct{
  2.         char a;
  3.         char b;
  4.         int c ;
  5. }__attribute__((aligned(2)));
復制代碼
這個的作用是讓 struct my_struct 類型的變量的最小對齊為 2 字節(jié),即 temp 的地址至少為 2 字節(jié)對齊。

  1. #pragma pack(2)
  2. struct my_struct{
  3.         char a;
  4.         char b;
  5.         int c;
  6. };
  7. #pragma pack()
復制代碼
這個的作用是讓 struct my_struct 中的成員的最大對齊為 2 字節(jié)。

論壇徽章:
0
3 [報告]
發(fā)表于 2011-09-18 14:02 |只看該作者
本帖最后由 Horizon2012 于 2011-09-18 14:04 編輯

測試了一下aligned屬性,果然是限制最小的對齊字節(jié)

  1. #include<stdio.h>

  2. struct my_struct{
  3.         char a;
  4.         char b __attribute__((aligned(2)));
  5.         int c ;
  6. };

  7. int main (int argc, char** argv)
  8. {
  9.         printf("size=%d\n",sizeof(struct my_struct));
  10.         struct my_struct temp;
  11.         printf("0x%x \n0x%x \n0x%x\n",&temp.a,&temp.b,&temp.c);
  12.         return 0;
  13. }
復制代碼
打印信息:
size=8
0xbfc23adc
0xbfc23ade   // 這個不是d而是e了
0xbfc23ae0

char b果然變成了按2字節(jié)對齊了。

多謝2樓指點

論壇徽章:
95
程序設計版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設計版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農
日期:2015-10-19 19:43:35程序設計版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
4 [報告]
發(fā)表于 2011-09-18 20:02 |只看該作者
回復 3# Horizon2012


    只要愿意查文檔,這些問題你都可以自己輕松搞定。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯網協會會員  聯系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP