Compiler Warning C4439


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at Compiler Warning C4439.

function' : function definition with a managed type in the signature must have a __clrcall calling convention

The compiler implicitly replaced a calling convention with __clrcall. To resolve this warning, remove the __cdecl or __stdcall calling convention.

C4439 is always issued as an error. You can turn off this warning with the #pragma warning or /wd; see warning or /w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning Level) for more information.

The following sample generates C4439.

// C4439.cpp  
// compile with: /clr  
void __stdcall f( System::String^ arg ) {}   // C4439  
void __clrcall f2( System::String^ arg ) {}   // OK  
void f3( System::String^ arg ) {}   // OK