Variablendeklaration mitten im Block

28/11/2009 - 10:29 von earthnut | Report spam
Hallo,

ich habe neulich ein bisschen mit meinem Compiler (gcc 4.0 auf Mac OS X
10.5.8) rumgespielt und dabei ist mir folgendes aufgefallen:

int main()
{
int i;
i = 0;
int j;
j = i;

return j;
}

kompiliert anstandslos (auch mit -Wall), egal ob in c99, c89, oder ansi
(auch mit jeder anderen Variablendeklaration beliebig weit im Block
drinnen versteckt).

Dagegen compiliert aber z. B.

int main()
{
...
for(int i = 0; i <= 10; i++) ...
...
}

wie zu erwarten nur in c99, in den anderen gibt es einen Fehler.

Ist das normal? Oder sollte der compiler nicht zumindest im erstenfall
warnen (außer bei c99)?

Bastian
 

Lesen sie die antworten

#1 earthnut
29/11/2009 - 08:39 | Warnen spam
Stefan Reuther wrote:

Wenn du noch mehr als "alle" Warnungen haben willst, musst du aber noch
'-W' bzw. neuerdings '-Wextra' dazupacken :-)



Danke, das ist auch gut zu wissen.

Leere if-s werden da z. B. gewarnt. Die hab ich doch schon öfters mal.
Was schreib ich denn dann da am besten?

if (is ok) (void)NULL;
else if (usw) usf;

Wird das dann generell gleich bewertet, wie wenn in der ersten Zeile nur

if (is ok);

stànde, oder bleibt das dem Compiler überlassen?

Bastian

Ähnliche fragen