Compartir a través de


Advertencia del compilador (nivel 4) C4816

'parámetro': el parámetro tiene una matriz de tamaño cero que se truncará (a menos que el objeto se pase por referencia)

Observaciones

Un parámetro para un objeto con una matriz de tamaño cero no se pasó por referencia. La matriz no se copiará cuando se pase el objeto.

Ejemplo

En el ejemplo siguiente se genera la advertencia C4816:

// 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);
}