Ich habe eine solche Struktur (aus irgendeinem Grund kann ich nicht nur ein Array verwenden):sizeof Berechnungsfehler Mitglied
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];
};
Und ich versuche Menge von Feldern zur Compile-Zeit zu berechnen:
enum {fieldsAmount = sizeof(OperatorData)/sizeof(OperatorData::m_record_0)};
und der Compiler Berichte eine solche Nachricht:
Error: #245: a nonstatic member reference must be relative to a specific object
enum{fieldsAmount = sizeof(OperatorData)/sizeof(OperatorData::m_record_0)};
^
ich benutze keil uVision3 V3.60. Es ist egal, wo ich enum Deklaration innerhalb oder außerhalb der Struktur platzieren. Warum kann der Compiler die Größe dieses Elements nicht annehmen?
Das Argument der 'sizeof' sollte ein Typ (nicht wahr hier) oder ein L-Wert sein (auch nicht wahr). – Matthias
@Matthias: Der Operand muss kein _lvalue_ sein; Jeder Ausdruck ist erlaubt, solange sein Typ für 'sizeof' geeignet ist. –
Sie sollten auch die Datenausrichtung berücksichtigen, die von Pragmas gesteuert wird, wie hier beschrieben http://stackoverflow.com/a/10207185/147763 –