我有一个问题,我正在写一个头文件,根据c标准数据类型的大小,定义不同的结构和联盟。我需要这样的东西。
#if sizeof(int) == 4
typedef struct {
int i;
} test;
#else
typedef struct {
long i;
} test;
#endif
不幸的是,这是不工作的。
有没有人知道,我怎么能做到这一点?
谢谢你的帮助。
你不能这样做,因为预处理器对C语言一无所知,但为了这个目的,你有固定大小的整数类型,这是标准和可移植的。
typedef struct {
int32_t i;
} test;
严格来说,你不能这样做。然而,你可以做的是把 "众所周知 "的预处理器定义作为提示,以决定你的目标是哪种架构、编译器和操作系统,并据此决定。