读书人

C语言预编译有关问题求大神指点

发布时间: 2013-12-28 22:19:33 作者: rapoo

C语言预编译问题,求大神指点
#include <stdio.h>
int main(void) {
#if PRINT_A == B
printf("define A");
#else
printf("not define A");
#endif
return 0;
}

运行结果是,打印出:define A;

感觉很奇怪,求大神解释
[解决办法]
PRINT_A和B符号都是没有定义的,所以值默认都为0,==的关系是成立的。

引用:
#include <stdio.h>
int main(void) {
#if PRINT_A == B
printf("define A");
#else
printf("not define A");
#endif
return 0;
}

运行结果是,打印出:define A;

感觉很奇怪,求大神解释

[解决办法]
#ifdef A
[解决办法]
引用:
但是如果在 printf("define A");下面添加一句printf("%d",B);会提示错误;

error: ‘B’ undeclared (first use in this function)

因为你的B不是代码中实际定义的变量,没有地址。。。。
[解决办法]
引用:
Quote: 引用:

PRINT_A和B符号都是没有定义的,所以值默认都为0,==的关系是成立的。

但是如果在 printf("define A");下面添加一句printf("%d",B);会提示错误;

error: ‘B’ undeclared (first use in this function)

一个是预编译,一个是变量

读书人网 >C语言

热点推荐