日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

missing closing parenthesis at end of #pragma

發布時間:2025/7/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 missing closing parenthesis at end of #pragma 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環境為Tornado2.2,VxWorks5.5

編譯出現警告如下:

warning: missing closing parenthesis at end of #pragma

warning: Unrecognised value for #pragma pack directive.

warning: malformed `#pragma pack'

有問題的代碼如下:

#ifndef _CFE_

#pragma pack(1)

#endif

typedefstruct _ROBO_PORT_CTRL_STRUC

{ unsigned charrx_disable; unsigned shorttx_disable; } ROBO_PORT_CTRL_STRUC;

#ifndef _CFE_

#pragma pack()

#endif

問題出在編譯的預處理指令#pragma上,在C語言中,預處理指令#pragma pack(n)是負責確定結構類型數據結構體內各個變量在內存中地址對齊方式的,第一、如果n大于等于結構體中長度最大的變量所占用的字節數,那么偏移量必須滿足默認的對齊方式,第二、如果n小于該變量的類型所占用的字節數,那么偏移量為n的倍數,不用滿足默認的對齊方式。結構的總大小也有個約束條件,分下面兩種情況:如果n大于所有成員變量類型所占用的字節數,那么結構的總大小必須為占用空間最大的變量占用的空間數的倍數;否則必須為n的倍數。更加詳細的內容請自己Google之。

對于本例來說,如果設置了#pragma pack(1),則:

sizeof(ROBO_PORT_CTRL_STRUC) = 3

如果沒有設置#pragma pack(1),則:

sizeof(ROBO_PORT_CTRL_STRUC) = 4 一般情況下使用編譯器缺省的對齊方式即可,但是總有些例外情況需要設置#pragma pack()參數,但是設置完了以后,想要恢復到原來缺省的對齊方式怎么辦?因為Tornado實際上使用的是GCC編譯器,因此查找了一下GCC的幫助,原文如下(中文是我自己的翻譯):

1、#pragma pack(n) simply sets the new alignment.

#pragma pack(n),就是設置新的對齊方式為n

2、#pragma pack() sets the alignment to the one that was in effect when compilation started (see also command-line option -fpack-struct[=n] see Code Gen Options).

#pragma pack(),將對齊方式恢復為原來的初始值(可以參見命令行編譯選項-fpack-struct[=n])

3、#pragma pack(push[,n]) pushes the current alignment setting on an internal stack and then optionally sets the new alignment.

#pragma pack(push[,n]),將當前的對齊方式存入內部堆棧,然后設置新的對齊方式為n

4、#pragma pack(pop) restores the alignment setting to the one saved at the top of the internal stack (and removes that stack entry). Note that #pragma pack([n]) does not influence this internal stack; thus it is possible to have #pragma pack(push) followed by multiple #pragma pack(n) instances and finalized by a single #pragma pack(pop).

#pragma pack(pop),恢復堆棧內保存的對齊方式,需要注意的是,單獨使用#pragma pack([n])指令它只設置新的對齊方式,而不會把當前對齊方式放入堆棧。可以用#pragma pack(push)指令將當前的對齊方式入棧,然后再使用#pragma pack([n])指令設置新的對齊方式,最后使用#pragma pack(pop)恢復原來的設置。

從上面的說明可以總結出如下的幾種配對使用方式,并附上在Tornado2.2,VxWorks5.5的環境下的編譯結果:
使用方法 編譯結果
1 #pragma pack(push) #pragma pack(1) …… #pragma pack(pop) 有警告,發生在#pragma pack(pop)那一行,內容如下:

missing closing parenthesis at end of #pragma

Extraneous characters at end of #pragma pack

Unrecognised value for #pragma pack directive.

malformed `#pragma pack'
2 #pragma pack(push,1) …… #pragma pack(pop) 有警告,發生在#pragma pack(push,1)和#pragma pack(pop)這兩行,內容同上
3 #pragma pack(push) #pragma pack(1) …… #pragma pack() 有警告,發生在#pragma pack()那一行,內容同上
4 #pragma pack(push,1) …… #pragma pack() 有警告,發生在#pragma pack(push,1)和#pragma pack()這兩行,內容同上
上表的運行結果說明如下:
使用方法 運行結果說明
1 #pragma pack(push) #pragma pack(1) …… #pragma pack(pop) #pragma pack(1)指令起作用,后續結構體定義按照新的對齊方式進行對齊,而#pragma pack(pop)不起作用,后續的結構體依然按照#pragma pack(1)的方式對齊
2 #pragma pack(push,1) …… #pragma pack(pop) #pragma pack(push,1)不起作用,依然按照缺省方式對齊。
3 #pragma pack(push) #pragma pack(1) …… #pragma pack() #pragma pack(1)指令起作用,后續結構體定義按照新的對齊方式進行對齊,而#pragma pack()不起作用,后續的結構體依然按照#pragma pack(1)的方式對齊
4 #pragma pack(push,1) …… #pragma pack() #pragma pack(push,1)不起作用,依然按照缺省方式對齊。
從上面兩張表可以看出,不管是哪種組合方式,都有編譯警告,而且都沒有真正達到設置和恢復對齊方式的目的,但是這也就是網上所能找到的最多的解決方案了。?

經過多次試驗和研究,終于發現使用#pragma pack(0)就沒有編譯錯誤,而且可以實現恢復缺省的對齊方式。

最后聲明,本解決方案是在Tornado2.2 + VxWorks5.5下編譯測試通過,其它環境沒有測試,上述結果僅供參考。


總結

以上是生活随笔為你收集整理的missing closing parenthesis at end of #pragma的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美日韩中文字幕 | 国产尻逼视频 | 大肉大捧一进一出好爽视频 | 亚洲free性xxxx护士白浆 | 色一涩| 波多野结衣视频播放 | 黄色成人av网站 | 久草aⅴ| 色四月婷婷 | 美痴女~美人上司北岛玲 | 国产日产亚洲精品 | 久久91精品 | 久草最新视频 | 又黄又爽网站 | 国产在线观看无码免费视频 | 欧美一区2区三区4区公司 | www.av视频在线观看 | 亚洲一区二区免费 | 91视频国产一区 | 秋霞精品一区二区三区 | 欧美日韩高清一区 | 人人澡人人插 | 国产又黄又 | 一区二区三区不卡视频 | 日韩六九视频 | 免费人成又黄又爽又色 | 日韩天堂 | 三级视频在线观看 | 91在线| wwwwww色| 新x8x8拨牐拨牐永久免费影库 | 天天摸天天操天天干 | 夜夜爱夜夜操 | 精品人妻午夜一区二区三区四区 | 欧美日一区二区三区 | 色涩视频在线观看 | 天堂激情网 | 成年在线观看视频 | 琪琪五月天 | 久久三级网 | 69福利社区| 成av人在线 | 四虎影视精品 | 亚洲五月婷 | 伊人网综合网 | 欧美精品一区二区三区在线播放 | 91在线观| 国产 xxxx | 久久在线视频精品 | 国产高清久久 | 亚洲人体av| 久久久涩 | 成人午夜影片 | 精品国产鲁一鲁一区二区三区 | 特级毛片www | 欧美日本韩国一区二区三区 | 国产亚洲精品美女久久久久 | 欧美黄色网| 日韩av女优在线观看 | 天天视频天天爽 | 4388成人网| 五月天综合久久 | 国产精品欧美激情 | 6699嫩草久久久精品影院 | www.色播 | 国产亚韩| 看片网址国产福利av中文字幕 | 欧美日韩在线视频一区二区三区 | 性欧美一区二区三区 | 国产精品欧美久久久久天天影视 | 又色又爽又黄 | 国产激情图片 | 三级少妇 | 国产成人aa | 女教师高潮黄又色视频 | 成人97| 深夜福利网站在线观看 | 欧美另类videossexo高潮 | 精品五月天 | 黄色三级视频 | 国产福利精品在线观看 | 国产精品久久久一区 | 久久久久无码国产精品一区李宗瑞 | 欧美日韩中文一区 | 丝袜美腿亚洲综合 | 婷婷丁香亚洲 | 日韩激情视频网站 | 最新国产精品 | 午夜视频网址 | 国产成人精品亚洲精品色欲 | 亚洲国产成人一区二区精品区 | 天海翼中文字幕 | 免费看国产视频 | 浓精h攵女乱爱av | 台湾佬美性中文娱乐 | 国产香蕉尹人视频在线 | 日本爽爽| 国产又粗又大又长 | 日本新japanese乱熟 |