我的一个.cpp文件由于第三方标题I #include
而生成警告C4275 ...(由于DLL导出类继承自非DLL导出类而触发警告据我所知。)
我添加了一行:
#pragma warning(disable : 4275)
作为我的.cpp文件的第一行,但仍然生成警告。这是在VC ++ 2008上,没有使用PCH。
为什么我的#pragma
无效,(除了更改第三方代码外)如何解决此问题?
答案 0 :(得分:5)
生成预处理文件,您可能会发现其他一些头文件重新启用警告。
答案 1 :(得分:1)
我没有看到此特定警告,但在Visual Studio中,您可以通过项目属性禁用特定警告(即,不是pragma)。以这种方式禁用它们似乎比通过pragma禁用它们“更强”。您可能只为您正在使用的文件执行此操作。
当然,警告经常告诉你一些有用的东西,所以这真的是最后的手段。
答案 2 :(得分:0)
万一有人偶然发现类似我的情况:
如果收到模板代码警告,则需要在包含模板之前禁用该警告,而不是使用它的代码。
示例:
// Disable the warning for size_t to int conversion which would cause a problem on
// 64 bit systems if the first container had more than 2^32 elements. Disabling it
// here is considered safe since it is impossible for the source container used in
// this class ever have that many elements.
#pragma warning(disable : 4267)
#include <myLib/myTemplateDefs.h>
#pragma warning(default : 4267)
// Code which uses the template goes here
在我们的情况下,这是可以接受的解决方案,因为容器涉及存储的数据库表的列名。