Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Semikolon hinter if?

1 view
Skip to first unread message

Andreas Volz

unread,
Feb 7, 2008, 4:14:05 PM2/7/08
to
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

unread,
Feb 8, 2008, 12:25:06 PM2/8/08
to
Andreas Volz wrote:
> 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

unread,
Feb 9, 2008, 4:41:54 AM2/9/08
to
Andreas Volz <usenet-s...@brachttal.net> writes:

> 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

unread,
Feb 9, 2008, 8:22:20 AM2/9/08
to
David Kastrup wrote:

> Andreas Volz <usenet-s...@brachttal.net> writes:
>>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

unread,
Feb 9, 2008, 4:39:19 PM2/9/08
to
Stefan Reuther <stefa...@arcor.de> writes:

<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.

Stefan Reuther

unread,
Feb 10, 2008, 8:01:24 AM2/10/08
to
David Kastrup wrote:

> Stefan Reuther <stefa...@arcor.de> writes:
>>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++"
[...]

> 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

unread,
Feb 10, 2008, 10:51:45 AM2/10/08
to
* Stefan Reuther <stefa...@arcor.de> (14:01) schrieb:

> David Kastrup wrote:
>> Stefan Reuther <stefa...@arcor.de> writes:
>>>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++"
> [...]
>> 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.)

Also wo man früher »-Wall -W« schrieb, schreibt man jetzt »-Wall
-Wextra«?

mfg, simon .... l

Stefan Reuther

unread,
Feb 10, 2008, 12:21:02 PM2/10/08
to
Simon Krahnke wrote:
> * Stefan Reuther <stefa...@arcor.de> (14:01) schrieb:
>><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.)
>
> 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

0 new messages