Compiler Error C2697
'array' : must explicitly specify __gc or __nogc for an array declared in a managed type
This error indicates that an array was not explicitly marked as unmanaged or managed in a __gc class.
C2697 is only reachable using /clr:oldSyntax.
The following sample generates C2697:
// C2697.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
__gc class a {
public:
int gc_arr[12]; // C2697
// try the following line instead
// int gc_arr __gc [];
// example of a static array
static int * static_gcarr = gc new int [10];
// example of a __nogc array
int nogc_arr __nogc [2];
};
int main() {
a *mya = new a;
mya -> gc_arr = new int __gc [2];
mya -> gc_arr[0] = 33;
System::Console::WriteLine(mya -> gc_arr[0]);
mya -> static_gcarr[0] = 44;
System::Console::WriteLine(mya -> static_gcarr[0]);
mya -> gc_arr[0] = 55;
System::Console::WriteLine(mya -> gc_arr[0]);
}