为什么我不能在#if中使用sizeof()?

参见英文答案 > Why can’t I use sizeof in a preprocessor condition?2
我有这个:
#if sizeof(int)
    #error Can't use sizeof in a #if
#endif

我得到这个编译错误

missing binary operator before token "("

为什么我不能在这里使用sizeof运算符?

解决方法

因为在运行预处理器之后计算出sizeof(),因此#if的信息不可用.

C编译器在逻辑上分为两个阶段,即使大多数现代编译器不分开它们.首先,源是预处理的.这涉及到处理和替换所有预处理条件(#if,#define,用替换替换定义的单词).然后将源传递,处理,到编译器本身.预处理器只是最低限度地意识到C的结构,它没有类型知识,因此它不能处理像sizeof()的编译器级结构.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...