我已经编写了自己的头文件来检查断言myassert.h,类似于assert.h头文件,我把它包含在另一个文件中,比如project_file.h。我还有NDEBUG宏,它在包含myassert.h之前定义,禁用断言的检查。 但是,我不想通过在project_file.h的开头定义NDEBUG来关闭断言检查。相反,我希望在makefile中有一个标志,以便在编译期间,用户可以设置将自动禁用/启用断言检查功能的标志。 project_file.h文件只是一个庞大项目中的一个文件。谁能告诉我怎么做?我已经检查了其他答案,但我不太明白如何使其工作。
非常感谢。
答案 0 :(得分:3)
您正在寻找的内容称为预处理器定义。您应该将-DNDEBUG
传递给gcc选项。
有关-D
选项的更多信息:http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html
有两种方法可以使用-D
:-D name
,-D name=definition
。
然后在您的代码中使用:
#ifndef NDEBUG
// ...
#endif
或
#if NDEBUG!=0
// ...
#endif