朋友向我求助于C ++。我不使用C ++只有C#(WP,WPF,WinForms)和Java(Android)。
他所拥有的任务的一部分是当定义宏STAR时,他应该在定义宏EQ时用*(星星)绘制一个圣诞节树,他假设用=(赋值运算符)绘制它。如果定义了两者或没有定义,则编译失败。绘制christmass树在任何语言中都很容易,但我对这些预处理器宏有问题。
#define STAR *
#define EQ =
#if !(defined(STAR) ^ defined(EQ))
FAIL TO COMPILE?
#endif
如何在代码中检查定义了哪个宏并将其值分配给char character;
?
答案 0 :(得分:15)
您需要#error预处理器指令
答案 1 :(得分:7)
有一个预处理器指令:
#error "One and only one of STAR or EQ should be defined"
答案 2 :(得分:2)
我为他做了这个任务。预处理器指令如下所示:
#define STAR "*"
// #define EQ "="
#if !(defined(STAR) ^ defined(EQ))
#error "STAR XOR EQ have to be defined"
#elif (defined(STAR))
#define CHARACTER STAR
#elif (defined(EQ))
#define CHARACTER EQ
#endif