Re: [hwloc-devel] [hwloc-svn] svn:hwloc r1986

2010-04-21 Thread Samuel Thibault
Jeff Squyres, le Wed 21 Apr 2010 09:04:11 -0400, a écrit :
> On Apr 21, 2010, at 8:47 AM, Bert Wesarg wrote:
> 
> > From that page:
> > 
> > If you are writing a header file that must work when included in
> > ISO C programs, write __typeof__ instead of typeof. See Alternate
> > Keywords.
> > 
> > > Modified: trunk/src/topology.c
> > 
> > That does not look like a header for me.
> 
> Right, but gcc complained when used with -std=c99 unless it was __typeof__.  
> I did not check to see if icc or pgcc accepted typeof.  I read that text to 
> be "if you want portable code, use __typeof__ instead of typeof."

Err, putting underscores doesn't magically makes something recognized by
compilers :)

The reason why the documentation tells about headers and not .c files is
that while you control which standard your .c files are compiled under
(e.g. -std=c99), you do not control which standard your .h files will be
compiled under by other applications, that's why you need a way to tell
a compiler "don't complain about these extensions I know you support but
warn about because you were given -std=c99).

Here, typeof is not c99, and that's why gcc complains when given
-std=c99 (instead of the default -std=gnu99). Putting underscores just
hides the bug...

Samuel


Re: [hwloc-devel] [hwloc-svn] svn:hwloc r1986

2010-04-21 Thread Jeff Squyres
On Apr 21, 2010, at 8:47 AM, Bert Wesarg wrote:

> From that page:
> 
> If you are writing a header file that must work when included in
> ISO C programs, write __typeof__ instead of typeof. See Alternate
> Keywords.
> 
> > Modified: trunk/src/topology.c
> 
> That does not look like a header for me.

Right, but gcc complained when used with -std=c99 unless it was __typeof__.  I 
did not check to see if icc or pgcc accepted typeof.  I read that text to be 
"if you want portable code, use __typeof__ instead of typeof."

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/




Re: [hwloc-devel] [hwloc-svn] svn:hwloc r1986

2010-04-21 Thread Bert Wesarg
On Wed, Apr 21, 2010 at 14:27,   wrote:
> Author: jsquyres
> Date: 2010-04-21 08:27:33 EDT (Wed, 21 Apr 2010)
> New Revision: 1986
> URL: https://svn.open-mpi.org/trac/hwloc/changeset/1986
>
> Log:
> Refs #18.  Fix some compiler warnings:
>
>  * Note the change of typeof to !__typeof__ -- I got that from
>   http://gcc.gnu.org/onlinedocs/gcc/Typeof.html.

>From that page:

If you are writing a header file that must work when included in
ISO C programs, write __typeof__ instead of typeof. See Alternate
Keywords.

> Modified: trunk/src/topology.c
> ==
> --- trunk/src/topology.c        (original)
> +++ trunk/src/topology.c        2010-04-21 08:27:33 EDT (Wed, 21 Apr 2010)
> @@ -649,7 +649,7 @@
>  */
>
>  #define merge_index(new, old, field) \
> -  if ((old)->field == (typeof((old)->field)) -1) \
> +  if ((old)->field == (__typeof__((old)->field)) -1) \

That does not look like a header for me.

Bert