2

Isis2(C#.NET)ライブラリと通信するC ++/CLIアプリケーションで遊んでいます。以下のコードでは、「警告3 C4538:'cli :: array ^':このタイプのconst/volatile修飾子はサポートされていません」というエラーが表示されます。これを投げる線を強調しました。私は困惑しています:これには配列がなく、constやvolatileも使用されていません!助言がありますか?

// CPlusPlus.cpp : main project file.

#include "stdafx.h"
#using <IsisLib.dll>
using namespace Isis;
using namespace System;

void GotNewView(View^ v)
{
   Console::WriteLine("Got a new view: " + v->ToString());
}

public delegate void GotAnInt_T (int i);
void GotAnInt(int i)
{
   Console::WriteLine("Got an int: {0}", i);
}

public delegate void GotTwo_T (String ^s, double d);
void GotTwo(String^ s, double d)
{
   Console::WriteLine("Got a string: <{0}> and a double: {1}", s, d);
}

public delegate void SendsReply_T(int i);
void SendsReply(int i)
{
   thisGroup()->Reply(-i);
}

int main(array<System::String ^> ^args)
{ 
   IsisSystem::Start();
   Group ^g = gcnew Group("test");       <============= THIS LINE
   g->RegisterViewHandler(gcnew ViewHandler(GotNewView));
   g->Handlers[0] += gcnew GotAnInt_T(GotAnInt);
   g->Handlers[0] += gcnew GotTwo_T(GotTwo);
   g->Handlers[1] += gcnew SendsReply_T(SendsReply);
   g->Join();
   g->Send((int^)0, 12345);
   g->Send((int^)0, "Aardvarks are animals", 78.91);
   Console::WriteLine("After Send, testing Query");
   Collections::Generic::List<int>^ results = gcnew Collections::Generic::List<int>();
   int nr = g->Query(Group::ALL, 1, 6543, gcnew EOLMarker(), results);
   IsisSystem::WaitForever();
   return 0;
}
4

1 に答える 1

1

これは既知のコンパイラのバグです。の揮発性配列メンバーについて警告していGroupます。それはすべきではありません。

推奨される回避策は、警告を無効にすることです。

#pragma warning (disable: 4538)

問題のあるコード行に対してのみ警告を無効にすることができる場合がありますが、C ++ / CLIコードにはこの問題を引き起こすものがないため、100%確実ではありません。あなたが試すことができます:

#pragma warning (push)
#pragma warning (disable: 4538)
Group^ g = gcnew Group("test");
#pragma warning (pop)
于 2012-08-28T00:08:03.277 に答える