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

标签 c++ macros makefile

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

相关文章:

不使用cmake编译源码

c++ - 多文件游戏中的枚举

c++ - 如何检查模板参数是否为迭代器类型?

c - memcpy 到宏中定义的字符串缓冲区

macros - `:expr` 后跟 `:tt` ,`expr` 片段不允许

ios - 具有获取 NSString 条件的宏

c++ - 未定义对类卡的引用

C++ 使用复制显示成对 vector

c++ - 通过 "int"、 "least"和 "fast"非固定宽度类型 C/C++ 允许编译器优化

c++ - 如何在 GNUMakefile 中包含 libxml2 库