2014-03-24 113 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