概述
错误 C1017
02/21/2013
本文内容
无效的整数常数表达式
#if 指令中的表达式不存在或者计算结果不为常数。
用 #define 定义的常数在 #if、#elif 或 #else 指令中使用时必须具有计算结果为整数常数的值。
下面的示例生成 C1017:
// C1017.cpp
#define CONSTANT_NAME "YES"
#if CONSTANT_NAME // C1017
#endif
可能的解决方案:
// C1017b.cpp
// compile with: /c
#define CONSTANT_NAME 1
#if CONSTANT_NAME
#endif
因为 CONSTANT_NAME 计算结果为字符串而不是整数,所以 #if 指令生成错误 C1017。
在其他情况中,预处理器将未定义的常数作为零进行计算。这可能导致意外的结果,如下例中所示。因为未定义 YES,所以它的计算结果为零。表达式 #if CONSTANT_NAME 计算结果为 false,而要对 YES 使用的代码由预处理器移除。由于 NO 也未定义(零),因此 #elif CONSTANT_NAME==NO 计算结果为 true (0 == 0),导致预处理器将代码保留在语句的 #elif 部分(与预期的行为完全相反)。
// C1017c.cpp
// compile with: /c
#define CONSTANT_NAME YES
#if CONSTANT_NAME
// Code to use on YES...
#elif CONSTANT_NAME==NO
// Code to use on NO...
#endif
若要确切了解编译器如何处理预处理器指令,请使用 /P、/E 或 /EP。
最后
以上就是虚心热狗为你收集整理的c语言1017错误什么意思,错误 C1017的全部内容,希望文章能够帮你解决c语言1017错误什么意思,错误 C1017所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复