回答
不,爲了更改gcc
中的結構的本地平臺對齊,您必須明確使用__attribute__((packed))
或__attribute__((align X))
編譯器指令或其他gcc
命令行開關,這些命令行開關專門指示編譯器更改數據相關的本機平臺對齊方式,結構。
此外,包裝具有混合數據類型的結構,使得所有的數據成員可能無法在存儲器中的適當的字邊界上對齊實際上將是在運行時訪問一個數據成員慢,不是更快。這是因爲在訪問數據成員之前,編譯器必須將結構解壓縮回平臺的本地對齊。
這不是唯一的方法 - 也有命令行開關,例如'-malign = ...',你可能會在'-m32'和'-m64'。 –
好的,更新...謝謝。 – Jason
我比'__attribute__'東西更喜歡'#pragma pack'。主要是因爲我從來不喜歡屬性語法,但部分原因是因爲編譯器支持它的編譯指示包語法非常相似。 –
不,這是不應該的 - 只要你有你的所有代碼模塊相同的對齊方式和包裝選項,就應該正常工作在一起,即使編譯不同的優化級別,
如果你有不同的佈局由不同的'-O'設置產生,例如,當一個翻譯單元生成的代碼可能與另一個翻譯單元在發佈結構/類時發佈的佈局和發佈的聲明在另一個文件中使用。這將是一場噩夢,所以你會明白爲什麼這不是一種選擇,正如前一張海報指出的那樣。 –
事實上,我可以看到如何對準結構(通過填充它們)可能導致更短的代碼(沒有跨境字尋址 - >更少的加載/存儲)
-Os
優化二進制大小(即通常被稱爲代碼大小)不是內存壓縮
- 1. gcc的優化影響邊界檢查
- 2. GCC優化對線程併發的影響
- 3. 網站結構是否會影響搜索引擎優化?
- 4. gcc編譯器優化受影響的代碼
- 5. gcc 4.3.4結構大小錯誤?
- 6. 獲取屬性是否會影響結構的大小?
- 7. 數組大小影響代碼結果。
- 8. 結構大小如此之大,需要優化
- 9. 意外的文件大小,同時變化gcc優化開關
- 10. HTML:div不受影像大小的影響
- 11. Cassandra - 物化視圖對錶刪除優化的影響
- 12. C結構大小對齊
- 13. 針對代碼大小優化的Newlib
- 14. GCC Preproccesor宏來確定多個結構的最大大小
- 15. 大PermGen的大小+性能的影響
- 16. 特定體系結構的默認GCC優化選項
- 17. 優化類結構
- 18. GCC printf優化
- 19. AS3:優化對象內存大小
- 20. gcc沒有小字符串優化?
- 21. 額外的繼承對對象結構或實例化有什麼影響嗎?
- 22. GCC 4.3/4.4與MSC 6 on i386優化大小失敗
- 23. MySQL的優化表結構
- 24. ICC vs GCC - 優化和CPU體系結構
- 25. 對更改主頁上的搜索引擎優化的影響
- 26. 結構的大小
- 27. UITableViewCell的大小對平滑滾動有重大影響嗎?
- 28. 優化級別影響比較枚舉
- 29. ViewState,QueryStrings及其對搜索引擎優化的影響
- 30. 內存對齊和結構的大小
你試過了嗎?我敢打賭,你沒有 – BlackBear