Discussion:
Semikolon hinter if?
(zu alt für eine Antwort)
Andreas Volz
2008-02-07 21:14:05 UTC
Permalink
Hallo,

es hat mich eben wieder mal eine Stunde gekostet, dass ich an einer
etwas unübersichtlichen Stelle ein Semikolon hinter eine if-Anweisung
gesetzt habe. Ich habe -Wall aktiviert, aber der Kompiler warnt nicht.
Gibt es eine Einstellung um das zu aktivieren?

Gruß
Andreas
--
Technical Blog <http://andreasvolz.wordpress.com/
Stefan Reuther
2008-02-08 17:25:06 UTC
Permalink
Post by Andreas Volz
es hat mich eben wieder mal eine Stunde gekostet, dass ich an einer
etwas unübersichtlichen Stelle ein Semikolon hinter eine if-Anweisung
gesetzt habe. Ich habe -Wall aktiviert, aber der Kompiler warnt nicht.
Gibt es eine Einstellung um das zu aktivieren?
'-W' bringt bei mir eine entsprechende Warnung.


Stefan
David Kastrup
2008-02-09 09:41:54 UTC
Permalink
Post by Andreas Volz
Hallo,
es hat mich eben wieder mal eine Stunde gekostet, dass ich an einer
etwas unübersichtlichen Stelle ein Semikolon hinter eine if-Anweisung
gesetzt habe. Ich habe -Wall aktiviert, aber der Kompiler warnt nicht.
Gibt es eine Einstellung um das zu aktivieren?
Ist verhältnismäßig neu als Warnung im Compiler (4.2.wasweißich oder
so).
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum
Stefan Reuther
2008-02-09 13:22:20 UTC
Permalink
Post by David Kastrup
Post by Andreas Volz
es hat mich eben wieder mal eine Stunde gekostet, dass ich an einer
etwas unübersichtlichen Stelle ein Semikolon hinter eine if-Anweisung
gesetzt habe. Ich habe -Wall aktiviert, aber der Kompiler warnt nicht.
Gibt es eine Einstellung um das zu aktivieren?
Ist verhältnismäßig neu als Warnung im Compiler (4.2.wasweißich oder
so).
So neu nun auch wieder nicht.

$ cat sem.c
void foo(int* i)
{
if (i);
++*i;
}
$ gcc -W -c sem.c
sem.c: In function `foo':
sem.c:3: warning: empty body in an if-statement
$ gcc --version
gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)
Copyright (C) 2004 Free Software Foundation, Inc.
[...]

Wie ich allerdings gerade sehe, gilt das nur für C, in C++ warnt diese
Version nicht.


Stefan
David Kastrup
2008-02-09 21:39:19 UTC
Permalink
Post by Stefan Reuther
Post by David Kastrup
Post by Andreas Volz
es hat mich eben wieder mal eine Stunde gekostet, dass ich an einer
etwas unübersichtlichen Stelle ein Semikolon hinter eine if-Anweisung
gesetzt habe. Ich habe -Wall aktiviert, aber der Kompiler warnt nicht.
Gibt es eine Einstellung um das zu aktivieren?
Ist verhältnismäßig neu als Warnung im Compiler (4.2.wasweißich oder
so).
So neu nun auch wieder nicht.
$ cat sem.c
void foo(int* i)
{
if (i);
++*i;
}
$ gcc -W -c sem.c
sem.c:3: warning: empty body in an if-statement
$ gcc --version
gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)
Copyright (C) 2004 Free Software Foundation, Inc.
[...]
Wie ich allerdings gerade sehe, gilt das nur für C, in C++ warnt diese
Version nicht.
<URL:http://gcc.gnu.org/gcc-4.2/changes.html>

listet in der Tat unter "C++"

-Wextra will produce warnings for if statements with a semicolon as
the only body, to catch code like:

if (a);
return 1;
return 0;


To suppress the warning in valid cases, use { } instead.

Ob -Wextra in -Wall enthalten ist und ob das jetzt unter denselben
Umständen wie bei C anwarnt -- keine Ahnung.
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum
Stefan Reuther
2008-02-10 13:01:24 UTC
Permalink
Post by David Kastrup
Post by Stefan Reuther
Wie ich allerdings gerade sehe, gilt das nur für C, in C++ warnt diese
Version nicht.
<URL:http://gcc.gnu.org/gcc-4.2/changes.html>
listet in der Tat unter "C++"
[...]
Post by David Kastrup
Ob -Wextra in -Wall enthalten ist und ob das jetzt unter denselben
Umständen wie bei C anwarnt -- keine Ahnung.
<http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>:
# -Wextra
# This enables some extra warning flags that are not enabled by
# -Wall. (This option used to be called -W. The older name is
# still supported, but the newer name is more descriptive.)

Ist zwar irgendwie nicht ganz intuitiv ("noch mehr als 'alles'?"), aber
man gewöhnt sich ja an alles.


Stefan
Simon Krahnke
2008-02-10 15:51:45 UTC
Permalink
Post by Stefan Reuther
Post by David Kastrup
Post by Stefan Reuther
Wie ich allerdings gerade sehe, gilt das nur für C, in C++ warnt diese
Version nicht.
<URL:http://gcc.gnu.org/gcc-4.2/changes.html>
listet in der Tat unter "C++"
[...]
Post by David Kastrup
Ob -Wextra in -Wall enthalten ist und ob das jetzt unter denselben
Umständen wie bei C anwarnt -- keine Ahnung.
# -Wextra
# This enables some extra warning flags that are not enabled by
# -Wall. (This option used to be called -W. The older name is
# still supported, but the newer name is more descriptive.)
Also wo man früher »-Wall -W« schrieb, schreibt man jetzt »-Wall
-Wextra«?

mfg, simon .... l
Stefan Reuther
2008-02-10 17:21:02 UTC
Permalink
Post by Simon Krahnke
Post by Stefan Reuther
# -Wextra
# This enables some extra warning flags that are not enabled by
# -Wall. (This option used to be called -W. The older name is
# still supported, but the newer name is more descriptive.)
Also wo man früher »-Wall -W« schrieb, schreibt man jetzt »-Wall
-Wextra«?
Genau. Wobei du vermutlich auch bei '-Wall -W' bleiben kannst, wird ja
noch unterstützt und von "deprecated" steht da nix.


Stefan

Lesen Sie weiter auf narkive:
Loading...