Tengo una estructura de este tipo (por alguna razón no puedo sólo tiene que utilizar una matriz):sizeof error de cálculo miembro de
struct OperatorData
{
char m_record_0[RIX_OPERATOR_CONFIG_SIZE];
char m_record_1[RIX_OPERATOR_CONFIG_SIZE];
//....
char m_record_9[RIX_OPERATOR_CONFIG_SIZE];
};
Y yo estoy tratando de calcular la cantidad de campos en tiempo de compilación:
enum {fieldsAmount = sizeof(OperatorData)/sizeof(OperatorData::m_record_0)};
un mensaje
y los informes del compilador como:
Error: #245: a nonstatic member reference must be relative to a specific object
enum{fieldsAmount = sizeof(OperatorData)/sizeof(OperatorData::m_record_0)};
^
utilizo Keil uVision3 V3.60. No importa dónde coloque la declaración enum dentro o fuera de la estructura. ¿Por qué no puede el compilador tomar el tamaño de este membmer?
El argumento de 'sizeof' debe ser un tipo (no es cierto aquí) o un valor L (tampoco es verdad) – Matthias
@Matthias: el operando no tiene que ser un _lvalue_; se permite cualquier expresión, siempre que su tipo sea apropiado para 'sizeof'. –
También debería considerar la alineación de datos, controlada por pragmas, como se describe aquí http://stackoverflow.com/a/10207185/147763 –