【发布时间】:2016-04-22 21:44:25
【问题描述】:
为什么这段代码会出错:
#include <stdio.h>
#define Rep (int)6
int main(){
#if Rep==6
printf("T");
#else
printf("F");
#endif
return 0;
}
- 为什么它拒绝强制转换?
- 是“预处理器错误”还是“编译器错误”?
【问题讨论】:
-
你能发布错误吗?
-
您可能看到的错误是因为预处理器不理解类型名称
int或强制转换运算符。您没有看到或只是忽略的错误或警告是因为 (a) 您缺少所需的#include <stdio.h>,(b)void main()应该是int main(void),并且 (c) 输出应该是以换行符结束:printf("T\n");。编译器不需要诊断所有这些问题,但您绝对应该修复它们。 -
@nielsbot 来自 Eclipse IDE 的错误:“在令牌“6”之前缺少二进制运算符”
-
@MinaSamir,这实际上是 Eclipse 的出色表现,请看我的回答。
标签: c casting compiler-errors c-preprocessor