2011-02-24 32 views
29

我的意思是,在我的每個源文件中,我必須插入#define NOGDI以停止包含GDI定義的windows.h(因爲它是BITMAP定義與我的衝突)。如何設置visual studio在全球註冊一些#defines?

例如

#define NOGDI 
#include <windows.h> 

不幸的是,我必須在包含windows.h的每個獨立的源文件中做到這一點,我不想這樣做。 我正在使用Visual Studio 2005,有沒有什麼辦法可以將它設置爲#define全局? (即在所有的源文件中)。

+0

除了tenfour的回答,您可以創建類似的config.h(包含你最喜歡的#define),然後包括這個文件在你的源代碼:) – onmyway133 2013-03-22 04:45:43

回答

54

項目設置 - > C/C++ - >預處理器 - >預處理器定義

在這裏,你可以定義全局應用到所有的源代碼項目中的符號。

+1

啊,我是一個白癡。非常感謝你。 – user631623 2011-02-24 04:18:20

+1

@ user631623:如果這有幫助並回答了您的問題,請點擊旁邊的綠色複選標記,接受它作爲正確答案。 – 2011-02-24 04:32:58

+0

@adam:是的,他回答的很快,它不允許我選擇一個正確的答案,所以我完全忘了它,對不起。 – user631623 2011-02-25 22:16:38

3

我已經建立了必要的定義整個項目,如上所述,在 項目設置 - > C/C++ - >預處理器 - >預處理器定義

但無論如何這沒有工作!

最終事實證明,問題是在檢查NOINHERIT複選框,

在定義線預處理定義對話框它看作是 「從父或項目的默認繼承」: WIN32,_DEBUG; _WINDOWS; _MBCS; $(NoInherit)

檢查了回來的東西,並且定義最終被識別出來。

+3

我發現由於某種原因,ubchecking,應用,然後重新檢查這個選項解決了我的問題。我不知道爲什麼。 – 8bitwide 2014-02-21 22:18:44

+1

有時試圖重建項目有所幫助。如果它仍然無法重新啓動VS的幫助。 – 2017-04-07 19:33:00

0

對於VS2015我編輯了.vcxproj文件,並增加了一節像這樣:

<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ItemDefinitionGroup> 
    <ClCompile>  
     <PreprocessorDefinitions>MY_VARIABLE=SOMETHING</PreprocessorDefinitions>