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

How to define a macro in a header file from the makefile

本文关键字:文件 定义 makefile      更新时间:2023-10-16

我已经编写了自己的头文件,用于检查断言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