在头文件中只定义一行



假设头文件中有三行:

#define line1
#define line2
#define line3

我想确定当所有行都被注释时应该定义line1。我还想知道任何两到三条线不应该同时活跃(不评论)。例如,如果line2和line3同时处于活动状态,编译器会生成一个错误。

我该怎么做呢?

确保在没有其他内容时定义了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

也许这就是你想要的:

#if defined(line2) && defined(line3)
    //generate error
#endif

将此添加到(可能已注释的)line1, line2line3的定义下面:

#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

这将确保三个定义中只有一个是活动的。

最新更新