假设头文件中有三行,例如:
#define line1
#define line2
#define line3
我想确保在评论所有行时应该定义line1。我也想知道任何两行或三行不应同时处于活动状态(未注释)。例如,如果line2和line3同时处于活动状态,则编译器应生成错误。
我该怎么做?
答案 0 :(得分:4)
确保在没有其他内容时定义line1
:
#if !defined(line1) && !defined(line2) && !defined(line3)
#define line1
#endif
如果定义了多行,则生成错误:
#if (defined(line1) && defined(line2)) || (defined(line1) && defined(line3)) || (defined(line2) && defined(line3))
#error "Your message here"
#endif
答案 1 :(得分:1)
也许这就是你想要的:
#if defined(line2) && defined(line3)
//generate error
#endif
答案 2 :(得分:1)
在line1
,line2
和line3
的(可能评论的)定义下方添加此内容:
#define CHK(a,b,c) (defined(a) && !defined(b) && !defined(c))
#if !(CHK(line1,line2,line3) || CHK(line2,line3,line1) || CHK(line3,line1,line2))
#error "Improper combination line1/line2/line3"
#endif
这应确保三个中的一个定义处于活动状态。