在 C 预处理器中获取可变大小
Getting variable size in C preprocessor
我有一个问题,我正在编写一个头文件,它根据 c 标准数据类型的大小定义了不同的结构和联合。我需要这样的东西:
#if sizeof(int) == 4
typedef struct {
int i;
} test;
#else
typedef struct {
long i;
} test;
#endif
遗憾的是这不起作用。
有人知道吗,我该怎么做?
感谢您的帮助。
严格来说,你不能。但是,您可以做的是将 "well known" 预处理器定义作为提示来决定您的目标架构、编译器和 OS,并据此做出决定。
你不能这样做,因为预处理器对 C 语言一无所知,但为此你有固定大小的整数类型,它们是标准的和可移植的
typedef struct {
int32_t i;
} test;
我有一个问题,我正在编写一个头文件,它根据 c 标准数据类型的大小定义了不同的结构和联合。我需要这样的东西:
#if sizeof(int) == 4
typedef struct {
int i;
} test;
#else
typedef struct {
long i;
} test;
#endif
遗憾的是这不起作用。
有人知道吗,我该怎么做?
感谢您的帮助。
严格来说,你不能。但是,您可以做的是将 "well known" 预处理器定义作为提示来决定您的目标架构、编译器和 OS,并据此做出决定。
你不能这样做,因为预处理器对 C 语言一无所知,但为此你有固定大小的整数类型,它们是标准的和可移植的
typedef struct {
int32_t i;
} test;