erwartete expression before '{' token
Erhalte ich: "Fehler: expected expression before '{' token" für die Zeile habe ich auskommentiert vor. Wenn die Struktur bereits definiert ist, warum würden Sie brauchen eine "{" token vor. Vielen Dank für jede Hilfe können Sie zur Verfügung stellen.
struct sdram_timing {
u32 wrdtr;
u32 clktr;
};
int calibration(void);
unsigned char read_i2c_cal(void);
static unsigned int eepcal[15];
main() {
DQS_autocalibration();
}
int calibration(void)
{
struct sdram_timing scan_list[30];
read_i2c_cal();
if(eepcal[0] == 0){
scan_list = {{eepcal[1], eepcal[2]}, { -1, -1}}; //<-- PROBLEM LINE
}
else {
//foo
}
return 0;
}
unsigned char read_i2c_cal(void) {
eepcal[0] = 0;
eepcal[1] = 02;
eepcal[2] = 03;
}
InformationsquelleAutor txcotrader | 2012-11-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Fehler ist, da kann man nicht zuweisen, ein array, das die Art und Weise, das funktioniert nur, um ihn zu initialisieren.
Damit dies für Ihr konkretes Beispiel:
oder verwenden Sie memset die gleiche Weise, aber anstatt sizeof(int), müssen Sie die Größe der Struktur. Das klappt nicht immer... aber angesichts Ihrer Struktur, es wird.
Was ich dir gab war, die generische Art und Weise, es zu tun. Ich bearbeitet meine post zu geben Sie ein konkretes Beispiel, die mit Ihrem code.
Dies geschieht auch, wenn versucht wird, weisen eine Struktur (z.B.
struct { int a; int b; } foo; foo = {1, 2};
)... +1 zur Unterscheidung von Zuweisung und Initialisierung in einer Weise, die gab mir eine schnelle Antwort.InformationsquelleAutor Mike
Arrays in der Programmiersprache C sind nicht abtretbar. Sie können nicht zuweisen, nichts, um das gesamte array, unabhängig davon, welche syntax Sie verwenden. In anderen Worten, diese
ist nicht möglich.
In C89/90, du würdest buchstabieren müssen Ihre Aufträge zeilenweise
In der modernen C (nach C99), die Sie verwenden können zusammengesetzte Literale zuweisen gesamten Strukturen
Schließlich in der modernen C können Sie
memcpy
- und compound-literals zum kopieren von Daten auf das arrayDie Letzte Variante, wenn auch nicht sehr elegant, ist der nächste Weg zu "emulieren" array-Zuweisung.
InformationsquelleAutor AnT
Können Sie nur verwenden Sie eine Initialisierungsliste in der Deklaration der Variablen, nicht nach der Tat.
InformationsquelleAutor Jim Buck
Initialisierungsliste kann nur verwendet werden, um ein array zu initialisieren. Sie können es verwenden, danach.
Allerdings, wenn Sie verwenden
GCC
verwenden, können SieCompound Literal
Erweiterung:Müssen Sie möglicherweise ändern
scan_list
Typstruct sdram_timing *
was ist, wenn ich ändern möchten Werte der scan_list nach der Initialisierung?
Ich habe gerade realisiert. Array-Variablen können nicht alleine stehen, wie ein lvalue. Ändern müssen, um einen Zeiger
der obige code zeigt Ihnen, wie Sie es nach der Initialisierung.
InformationsquelleAutor texasbruce