代码之家  ›  专栏  ›  技术社区  ›  Aidan Ryan

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

  •  3
  • Aidan Ryan  · 技术社区  · 14 年前

    升级到VC++ 2010后,当C++/CLI项目消耗C类项目中的强类型数据集时,引发警告C45 64(方法定义不支持的默认参数)。

    readersmanager.cpp(311):警告c4564:类“system::data::dataTable”的方法“setNewRecord”定义了不支持的默认参数“action”

    调用方法时显式指定值“2”

    从程序集“system.data,version=4.0.0.0,culture=neutral,publickeytoken=b7a5c561934e089”导入类型“system::data::datatable”时发生此诊断。

    从程序集“system.data.datasetensions,version=4.0.0.0,culture=neutral,publicKeytoken=b7a5c561934e089”导入类型“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 回复  |  直到 9 年前
        1
  •  9
  •   BartoszKP    9 年前

    这是一条4级警告信息,属于“有朝一日这可能会让你大吃一惊”的类别。在.NET语言中,支持使用默认参数值调用方法而不指定该值。vb.net总是拥有它,C刚在第4版中获得它。C++/CLI不支持它,而且肯定不会支持它。值得注意的是C++语言 支持它。C++/CLI程序员可能会对此感到惊讶,因此警告。

    关于警告,您可以做的不多,数据集的代码是自动生成的。否则它是完全良性的,如果您在不为参数提供默认值的情况下调用该方法,那么您将得到一个编译器错误。

    只要关闭警告 #pragma warning(disable:4564) 项目 -gt; 性质 -gt; C/C++ -gt; 先进的 -gt; 禁用特定警告 .