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); }
Hallo, auch mit #pragma NOINIT gibt es nur folgende Meldungen: compiling main.c... MAIN.C(8): warning C189: 'n2': storage class changed to 'static' main.c(13): warning C184: value of 'n3' possibly undefined main.c(13): warning C184: value of 'n3' possibly undefined main.c(15): warning C184: value of 'n3' possibly undefined linking... Program Size: data=1092(near=1092) const=86(near=0) code=1304 "test1" - 0 Error(s), 4 Warning(s).
#include"stdio.h" #pragma NOINIT // Speichermodell ist HLARGE void main() { static int n1; int near n2; int n3; if(n1==1) n1++; if(n2==1) n2++; if(n3==1) n3++; printf("n1=%d, n2=%d, n3=%d",n1,n2,n3); }