limesdr做4G基站 #pragma pack(1) 的意义是什么?
#pragma pack(1) 的意义是什么?将结构的边界对齐设置为1字节,即所有数据连续存储在内存中。例如,您用C语言定义以下结构:struct s{char Chint I},然后在main函数中
#pragma pack(1) 的意义是什么?
将结构的边界对齐设置为1字节,即所有数据连续存储在内存中。例如,您用C语言定义以下结构:struct s{char Chint I},然后在main函数中编写一个句子:printf(%d”,sizeof(struct s)),即输出结构s占用的字节数。您认为输出结果会是什么?我们知道char类型需要1个字节,int类型需要4个字节,所以输出结果是5?答案是否定的。你可以自己试试,输出是8。为什么?这是因为编译器优化了结构的存储,以使程序运行更快,减少CPU读取数据的指令周期。事实上,尽管第一个char成员最初只有一个字节,但它实际上占用了四个字节,因此第二个int成员的地址可以除以四。所以实际上是8个字节。并且#pragma pack(1)允许编译器强制连续排列结构数据。这样,sizeof(struct s)的输出是5。