|
|
1
12
因为sizeof()是在预处理器运行后计算的,所以该信息对于
C编译器在逻辑上分为两个阶段,即使大多数现代编译器没有将它们分开。首先,对源代码进行预处理。这涉及到计算并替换所有预处理器条件(#if、#define,用替换词替换已定义的词)。然后将源代码传递、处理到编译器本身。预处理器对C的结构只有最低限度的了解,它没有类型知识,因此无法处理类似sizeof()的编译器级构造。 |
|
|
2
1
因为您只能在预处理器指令中使用文字常量。此外,sizeof(int)总是大于0,所以我相信这个#if无论如何都是真的。 |
|
|
3
-3
考虑:
现在,这是不正确的语法,因为我已经做了一段时间以来,我做了C++,但点仍然代表: |
|
|
4
-3
如果不是,就用普通的
|
|
|
Timo · 如果宏变量后跟构成有效标识符的字符,则不会展开宏变量 8 年前 |
|
|
user3623498 · 在#if中更改变量时出现问题 8 年前 |
|
|
einpoklum · 来自#cmakedefine替换的意外结果 8 年前 |
|
|
Joseph Franciscus · C中预处理器方法的别名++ 8 年前 |
|
|
stoper · 防止同一宏在多个转换单元中具有不同的定义 8 年前 |
|
|
СеÑгей · MinGW中预处理器g++的奇怪行为 8 年前 |