首先,我认识到这可能是不可能的,因为宏只展开一次。但是,我希望有一些标准的方法可以实现类似的行为,或者对其他方法的追求提出建议。
我正在寻找一种方法来对我们的构建进行编译时检查,在不兼容的情况下会引发错误。下面的方法当然行不通,但在我看来是最简单的方法来传达这个想法:
版本.h:
#define CODE_VERSION 2
#define VERSION(x) #if (CODE_VERSION > (x) ) \
#error "Incompatible version detected!" \
#endif
主.c:
#include "version.h"
VERSION(1)
// ...and so on
如果预处理器的输出被反馈到预处理器,这应该会导致编译期间出现错误。
那么,实现这种(或类似)行为的正确方法是什么?出于好奇,这背后的想法是避免在审查相当大的代码库期间进行手动分析以符合审计流程(因为自动审计的负担要小得多)。
最佳答案
提升静态断言?由于它被标记为 C 和 C++,boost 可能不是一个选项,但请引用:BOOST_STATIC_ASSERT without boost用于替代。
关于c++ - c/c++编译时 "compatibility"检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4714958/