我正在读一本书来学习C。在那本书中,下面的示例代码给出了 gcc (Debian 4.7.2-4) 4.7.2 的预处理器错误。错误是:
file.c:在函数'main'中:
file.c:16:14:错误:令牌“我知道 C 语言。\n””在预处理器表达式中无效
file.c:20:14:错误:令牌""我知道 BASIC。\n"" 在预处理器表达式中无效
代码是:
#include <stdio.h>
#define C_LANG 'C'
#define B_LANG 'B'
#define NO_ERROR 0
int main(void)
{
#if C_LANG == 'C' && B_LANG == 'B'
#undef C_LANG
#define C_LANG "I know the C language.\n"
#undef B_LANG
#define B_LANG "I know BASIC.\n"
printf("%s%s", C_LANG, B_LANG);
#elif C_LANG == 'C'
#undef C_LANG
#define C_LANG "I only know C language.\n"
printf("%s", C_LANG);
#elif B_LANG == 'B'
#undef B_LANG
#define B_LANG "I only know BASIC.\n"
printf("%s", B_LANG);
#else
printf("I don't know C or BASIC.\n");
#endif
return NO_ERROR;
}
gcc 预处理器是否无法正确执行此操作,或者代码有问题需要更改?