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

时间:2010-06-22 11:30:15

标签: visual-c++ c++-cli warnings strongly-typed-dataset 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#可选参数功能的问题吗?

1 个答案:

答案 0 :(得分:9)

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

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

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