如果 sizeof(struct ...) 不等于给定数字,如何获得 C 编译器#error?

0 c c++ compiler-errors compilation sizeof

如果 sizeof(struct ...) 不等于给定数字,如何获取 C 编译时#error?

问题来自编程课程,我想避免运行错误大小的二进制代码。

(众所周知,sizeof 运算符在 #if .. #endif 指令中不起作用。)

eer*_*ika 5

如果 sizeof(struct ...) 不等于给定数字,如何获取 C 编译时#error?

你不能,因为预处理器对类型的大小一无所知。

但是,您可以static_assert

static_assert(sizeof(T) == N, "T must have size N")
Run Code Online (Sandbox Code Playgroud)

在 C 中,关键字是_Static_assert,也可以通过static_assert中的宏使用<assert.h>