2011-11-13 291 views
9

由於第三方頭I #include ...,我的.cpp文件之一正在生成警告C4275(警告是由於DLL導出類從非易失性存儲器繼承而觸發的,據我所知,DLL導出類)。#pragma警告不會抑制警告

我加了一行:

#pragma warning(disable : 4275) 

由於我的.cpp文件的第一行,但仍產生了警告。這是在VC++ 2008上,並沒有使用PCH。

爲什麼我的#pragma無法正常工作,(除了更改第三方代碼)我該如何解決這個問題?

+0

你有沒有機會使用openmp?(只有我見過的/使用#pragma) – pyCthon

回答

5

生成預處理文件,您可能會發現其他一些頭文件重新啓用警告。

+1

爲了節省一些挫敗感:在Visual Studio 2005和2012中,使用/ P標誌會導致警告編譯指示被忽略,例如, '/ P/D「NOMINMAX」'和 '#pragma warning(disable:4005) #define NOMINMAX' 導致警告C4005。 –

1

我還沒有看到這個特別的警告,但在Visual Studio中,您可以通過項目屬性(即非編譯指示)禁用特定的警告。以這種方式禁用它們似乎比通過編譯指令禁用它們更「強大」。你可能只爲你使用的一個文件做到這一點。

當然,警告經常會告訴你一些有用的東西,所以這真的是最後的手段。

+1

這也行不通。在我的情況下,我發現雜耍'#includes'使這個警告消失 - 這次 - 但我仍然想知道'#pragma'不起作用的情況。 –