Compartir vía


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)

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

El ejemplo siguiente 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);
}