我希望创建一个结构体,其大小在编译时是任意的且已知(用于宏)。例如:
然而,我担心
/* assume sizeof(SomeStruct) could be an odd number,
* if it is using GCC's 'packed' attribute for eg */
struct {
unsigned char data[sizeof(SomeStruct)];
} a, *tmp;
tmp = (void *)some_data
a = *tmp;
然而,我担心
struct
填充会增加struct
的大小,使其比成员大。但是有人向我保证,单个成员struct
的大小总是等于其成员的大小。
因此,我的问题是:
我能否依赖于单个成员结构体始终与其成员具有相同的大小?这是C规范的一部分吗?还是只是大多数编译器的行为?
SWAP
宏的示例 - http://stackoverflow.com/questions/29192256/portable-c-swap-macro-which-doesnt-require-a-type-argument - ideasman42