我已经编写了自己的用于检查断言的头文件 myassert.h,类似于 assert.h 头,我将其包含在另一个文件中,比如 project_file.h。我还有 NDEBUG 宏,当它在包含 myassert.h 之前定义时,会禁用断言检查。 但是,我不想通过在 project_file.h 的开头定义 NDEBUG 来关闭断言检查。相反,我想在 makefile 中有一个标志,以便在编译期间,用户可以设置将自动禁用/启用断言检查功能的标志。 文件 project_file.h 只是一个巨大项目中的一个文件。谁能告诉我该怎么做?我检查了其他答案,但我不太明白如何让它发挥作用。
非常感谢。
最佳答案
您要查找的内容称为预处理器定义。您应该将 -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
关于c++ - 如何在 makefile 的头文件中定义宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22617118/