2014-03-24 91 views
0

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

非常感谢。

+0

注意,你想要什么是很容易做到与CMake的,且易于管理的用户。 – Caduchon

+0

CMake是一个更高级的跨平台编译工具,这不是海报想要知道的。 CMake是一个非常强大的工具,是的,添加变成预处理器定义的选项很简单,但是海报会)必须学习CMake,而b)不会意识到简单的命令行语法可用于每个构建系统。 – blockchaindev

回答

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 
+0

感谢您的回复,-D选项有效,除了D和宏名称之间不需要有空格 – Sandra