感謝Zuse的說明,以下記錄詢問後的心得,Gcc提供一種指定函式或變數屬性的方法__attribute__,使用者可以籍由它來告訴Gcc,被宣告的函式或變數的屬性及行為;當一個資料結構被以__attribute__(packed)指定屬性,當資料結構中的成員沒有Alignment 時,Gcc將不會主動對其進行Padding處理!這個動作常用於通訊方面的傳輸,因為通訊傳輸上的資料格式必須固定一致,使用 __attribute__(packed)可避免Gcc在Compile Time時,誤將其進行Padding的處理!
PS. Padding就是當資料結構在宣告時,若沒有注意到成員變數的型態是否有Alignment,Gcc會主動將其進行Alignment的動作,以提昇存取效率!
沒有留言:
張貼留言