使用下面的代码,当我想要得到“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

最佳答案

问题是,哪里定义了VGANVGA
如果未定义,则根据C标准(N1570-6.10.1条件包含-第4段),它们将等于0
由于宏扩展和定义的一元
操作符已被执行,所有剩余标识符(包括词汇)
与关键字相同)替换为pp数字0,然后每次预处理
令牌被转换为令牌。
这意味着您的比较将是#if 0==0,这与#if 1相同。
要解决此问题,需要同时定义VGANVGA以具有不同的值:

#define VGA  1
#define NVGA 2

10-04 21:16