在构建消耗强类型数据集的C++/CLI项目时发出警告C4564

Aid*_*yan 3 warnings c++-cli strongly-typed-dataset visual-c++ visual-c++-2010

升级到VC++ 2010后,在构建使用C#项目中的强类型数据集的C++/CLI项目时,会引发警告C4564(方法定义不支持的默认参数).

ReadersManager.cpp(311):警告C4564:类'System :: Data :: DataTable'的方法'SetNewRecord'定义了不支持的默认参数'action'

调用方法时显式指定值"2"

从程序集"System.Data,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"导入类型"System :: Data :: DataTable"时发生此诊断.

从程序集'System.Data.DataSetExtensions,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'导入类型'System :: Data :: TypedTableBase'时发生此诊断.

从程序集"MyProductDataStoreCLR,Version = 4.5.0.9,Culture = neutral,PublicKeyToken = null"导入类型"MyProductDataStoreCLR :: ReadersDataSet :: ReadersDataTable"时发生此诊断.

警告是在调用时引发的System::Data::DataTable::Select,因此我无法在与之相关的调用代码中进行任何更改SetNewRecord.

这是C++/CLI不支持新的C#可选参数功能的问题吗?

Han*_*ant 10

这是一个警告级别为4的消息,属于"这可能会在某天将字节记入您的类别"这一类别.支持使用默认参数值调用方法而不指定值在.NET语言中是不确定的.VB.NET总是拥有它,C#刚刚在版本4中获得它.C++/CLI不支持它,肯定永远不会.这是值得注意的,因为C++语言确实支持它.C++/CLI程序员可能会对此感到惊讶,因此警告.

关于警告,您无能为力,数据集的代码是自动生成的.否则完全是良性的,如果你调用方法而没有为默认值的参数提供值,那么你将得到一个编译器错误.

只需使用#pragma warning(disable:4564)项目 - > 属性 - > C/C++ - > 高级 - > 禁用特定警告关闭警告.