我有一个程序,必须在 DEBUG 模式下编译。(测试目的)
如何让预处理器防止在 RELEASE 模式下编译?
任何地方:
#ifndef DEBUG #error "Only Debug builds are supported" #endif
参考资料: 诊断
如果您只是想报告一个错误:
#ifdef RELEASE #error Release mode not allowed #endif
将与大多数编译器一起工作。
您可以使用 error指令进行此操作。如果没有定义 DEBUG,下面的代码将在编译时抛出错误:
error
DEBUG
#ifndef DEBUG #error This is an error message #endif
C 提供一个 #error语句,大多数编译器添加一个 #warning语句。
#error
#warning
也许是一些更复杂的东西,但它只是复制和粘贴以前的解决方案。 : -)
#ifdef DEBUG #pragma message ( "Debug configuration - OK" ) #elif RELEASE #error "Release configuration - WRONG" #else #error "Unknown configuration - DEFINITELY WRONG" #endif
另外,还有一种生成警告的方法。 创建未引用的标签,如
HereIsMyWarning:
不要引用它。在编译过程中,你会得到一个类似
1>..\Example.c(71) : warning C4102: 'HereIsMyWarning' : unreferenced label
对于 GCC 和 Clang (可能还有任何支持 _ Pragma 特性的编译器) ,您可以定义一个宏:
#if ! DEBUG #define FIX_FOR_RELEASE(statement) _Pragma ("GCC error \"Must be fixed for release version\"") #else #define FIX_FOR_RELEASE(statement) statement #endif
您可以使用这个宏进行临时修改,例如避开同事尚未编写的代码,以确保您不会忘记在向公众发布构建时修复它。都行
FIX_FOR_RELEASE() // Code that must be removed or fixed before you can release
或者
FIX_FOR_RELEASE(statement that must be removed or fixed before you can release);
在代码: : 块中,如果不需要发布模式,可以删除发布模式。为此,单击“项目”菜单,选择“属性...”,然后在“构建目标”选项卡中,单击“发布”,然后单击“删除”按钮。删除发布模式只适用于当前项目,因此您仍然可以在其他项目中使用它。
否则,如果你真的想使用预处理器,你可以这样做:
#ifdef RELEASE #error "You have to use the Debug mode" #endif