Hallo, für folgenden Code wird nur für die Variable n3 die Warnung C184 (value possibly undefined) generiert, obwohl keine der Variablen einen definierten Wert besitzen. Wird die Warnung nur generiert, wenn die lokale Variable auf dem Stack angelegt wird? n1 und n2 sind ja eigentlich auch lokale Variablen, auch wenn sie nicht auf dem Stack angelegt werden.
#include"stdio.h" // Speichermodell ist HLARGE void main() { static int n1; int near n2;// wird zu static, da Speichermodell=HLARGE int n3; if(n1==1) n1++; if(n2==1) n2++; if(n3==1) n3++; printf("n1=%d, n2=%d, n3=%d",n1,n2,n3); }
obwohl keine der Variablen einen definierten Wert besitzen. Doch, besitzen sie, zumindest wenn der Compiler so eingestellt ist, dass er annaehernd so funktioniert, wie es ein C-Compiler sollte. Statische Variablen werden initialisiert: zu Null, wenn nichts anderes angegeben ist. Nur automatische sind undefiniert. Anderenfalls ist der Compiler kaputt(-konfiguriert).