2011-11-13 233 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'不起作用的情况。 –