2017-03-11 10 views
0

Ich habe ein Programm, das den Compiler einer bestimmten Sprache stimulieren soll, mit Strukturen, die ich gemacht habe jedes "Wort" des Speichers haben eine 15 int Array von "Bits “das Problem ist, dass jedes Mal, wenn ich versuchen, diesen Test i 2 Fehler zu kompilieren:Ausdruck muss ein modifizierbarer Lvalue auf einem Struktur-Array sein, das änderbar ist

Ausdruck eine modifizierbare lvalue

und einen folgenden Ausdruck

erwartet sein muss, ich habe keine Ahnung, warum die zweite erscheint, und als ich den ersten Fehler suchte, fand ich, dass der linke Wert sein sollte Ich kann nicht ändern, obwohl ich nicht verstehe warum.

Anmerkung: Ich habe versucht, einen Zeiger anstelle eines Arrays zu verwenden, und es hat nichts ändern

Code:

word memory[1000]; 

    struct bit { 
      unsigned int bt : 1; 
     }typedef bit; 

    struct word { 
      bit mem[15]; 
     }typedef word; 

     memory[0].mem = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; 

bearbeiten: Sie schlagen nicht vor Änderungen an den Strukturen, weil sie Teil eines großen Programms, und es wird zu viel Arbeit zu nehmen, sie zu ändern

Antwort

0

Arrays sind nicht direkt zuordenbaren in C jedoch structs enthält Arrays sind, also was Sie tun können, ist dies:

word w = { { {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1} } }; 
memory[0] = w; 

Mit C99 Sie eine Verbindung wörtliche verwenden können und sagen:

memory[0] = (struct word){ { {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1} } }; 

(In C++ Sie unbeschränkten temporäre Werte verwenden könnte.)

+0

[Demo] (https://ideone.com/ Ea0RQi) –

+0

danke! das hat funktioniert. auch tut mir leid für so eine blöde frage ich bin ziemlich neu zu c –

Verwandte Themen