Compilerwarnung (Stufe 4) C4816
Aktualisiert: November 2007
Fehlermeldung
'Param': Parameter hat ein Array der Größe 0 (null), das abgeschnitten wird (sofern das Objekt nicht durch einen Verweis übergeben wird)
'param' : parameter has a zero-sized array which will be truncated (unless the object is passed by reference)
Ein Parameter für ein Objekt mit einem Array der Größe 0 wurde nicht durch einen Verweis übergeben. Das Array wird bei der Übergabe des Objekts nicht kopiert.
Beispiel
Im folgenden Beispiel wird C4816 generiert:
// C4816.cpp
// compile with: /W4
#include <stdio.h>
extern "C" int printf_s(const char *, ...);
#pragma warning(disable : 4200)
struct S1
{
int i;
char cArr[];
};
void TestErr(S1 s1) // C4816 param with zero-array
// not passed by reference
{
printf_s("%d %c %c\n", s1.i, s1.cArr[0], s1.cArr[1]);
}
void TestOk(S1 &s1)
{
printf_s("%d %c %c\n", s1.i, s1.cArr[0], s1.cArr[1]);
}
int main()
{
S1 myS_1 = { 6, 'a', 'b', 'c' };
TestErr(myS_1);
TestOk(myS_1);
}