使用下面的代码,当我想要得到“NOT VGA”时,我总是得到“VGA”作为输出
#include<stdio.h>
#include<conio.h>
#define ADAPTER NVGA
#if ADAPTER==VGA
int main()
{
printf("VGA");
getch();
return 0;
}
#else
int main()
{
printf(" NOT VGA");
getch();
return 0;
}
#endif
最佳答案
问题是,哪里定义了VGA
和NVGA
?
如果未定义,则根据C标准(N1570-6.10.1条件包含-第4段),它们将等于0
:
由于宏扩展和定义的一元
操作符已被执行,所有剩余标识符(包括词汇)
与关键字相同)替换为pp数字0,然后每次预处理
令牌被转换为令牌。
这意味着您的比较将是#if 0==0
,这与#if 1
相同。
要解决此问题,需要同时定义VGA
和NVGA
以具有不同的值:
#define VGA 1
#define NVGA 2