1. 程式人生 > >結構體 位元組對齊 __align() __attribute((aligned (n))) #pragma pack(n)

結構體 位元組對齊 __align() __attribute((aligned (n))) #pragma pack(n)

#pragma pack(4)
struct mystu
{
	char a ; 
	int  b ;
};
#pragma pack()

GCC推薦的對齊指令如下:

_attribute_((packed))和_attribute_((aligned(n)))

armcc一般是專門針對arm晶片開發時用的編譯器,語法除了遵守標準C語法外,還支援arm體系下特有的語法規則。gcc應用範圍場景比較廣泛,可以是gcc for x86、gcc for arm,gcc for mips等等,也就是說gcc是在GNU協議下的一款多用途跨平臺的開源編譯器。gcc功能特強,應用範圍特廣,可以這麼說只要涉及到C/C++語言開發、Linux開發、開源軟體開發、嵌入式開發等等領域的,沒有不會不用到GCC的。

  struct stu{
   char sex;
   int length;
   char name[10];
  }__attribute__ ((aligned (1))); 
#define GNUC_PACKED __attribute__((packed))
struct PACKED test
{
char x1;
short x2;
float x3;
char x4;
}GNUC_PACKED;

__attribute__((packed))得變數或者結構體成員使用最小的對齊方式,即對變數是一位元組對齊,對域(field)是位對齊.