Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Sep 1996 12:56:47 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        brandon@glacier.cold.org, freebsd-hackers@freebsd.org
Subject:   Re: machine/endian.h: network byte order macros
Message-ID:  <199609190256.MAA23999@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>Compiling with '-Wall -pedantic' when using these macros (i.e. ntohs) 
>gives the warning:
>
>net.c: In function `get_server_socket':
>net.c:129: warning: ANSI C forbids braced-groups within expressions

This warning is correct.  ntohs() depends on gcc statement-expressions,
and statement-expressions aren't ANSI.

>Although trivial, the problem can be fixed by just removing '(' ')' from 
>the outside of the macro, leaving '{' '}' there.  This likely causes a 

No, this just breaks the statement-expression.  `foo = { bar; } is a
syntax error even in gcc.  Adding __extension__ before the statement-
expression seems to work right.

>problem with how its used (as a function), which would then lead one to 
>think perhaps it should just be a function?  *shrug*

A (non-inline) function would be slower.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199609190256.MAA23999>