如何在makefile中定义头文件中的宏

时间:2014-03-24 18:00:58

标签: c++ macros makefile

我已经编写了自己的头文件来检查断言myassert.h,类似于assert.h头文件,我把它包含在另一个文件中,比如project_file.h。我还有NDEBUG宏,它在包含myassert.h之前定义,禁用断言的检查。 但是,我不想通过在project_file.h的开头定义NDEBUG来关闭断言检查。相反,我希望在makefile中有一个标志,以便在编译期间,用户可以设置将自动禁用/启用断言检查功能的标志。 project_file.h文件只是一个庞大项目中的一个文件。谁能告诉我怎么做?我已经检查了其他答案,但我不太明白如何使其工作。

非常感谢。

1 个答案:

答案 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