--- ac ----Warum gibt es keinen Fehler in diesem Programm?
int i; // external definition
---- ------ main.c
int i=0; // external definition
int main(void)
{
i=0;
}
In beiden Dateien i
ist ein externer defnition in jeder Übersetzungseinheit und i
wird in einem Ausdruck verwendet. Das sollte verletzen:
Wenn ein Identifikator mit externer Bindung deklariert wird in einem Expression (ausgenommen als Teil des Operanden von einem Operator sizeof , dessen Ergebnis eine ganzzahlige Konstante), irgendwo in dem gesamten Programm verwendet es soll genau eine externe Definition für den Identifikator geben; sonst wird es nicht mehr sein als one.140)
Wie kompilieren Sie das? –
'int i;' in 'a.c' ist eine * vorläufige Definition *. Siehe [N1570] (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf) 6.9.2p2. –
Ich benutze 'gcc -Wall -g' – Sabrina