Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #103557

Re: C Names and Scopes

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c
Subject Re: C Names and Scopes
Date 2017-02-09 19:53 +0000
Organization A noiseless patient Spider
Message-ID <87vasj5efl.fsf@bsb.me.uk> (permalink)
References <o7duoo$vmp$1@dont-email.me> <o7iddv$55j$1@dont-email.me>

Show all headers | View raw


BartC <bc@freeuk.com> writes:

> ... What exactly do you have to do to make it report an
> error, rather than a warning?

-Werror

> Here's the example that led me to post:
>
>   int;

<snip>
> ... Does the
> standard actually allow this?

No.

> ... It doesn't help when the compiler apparently isn't bothered no
> matter what I write!

The compiler is bothered by it -- bothered enough to tell you about it.
Lots of people don't like gcc's default choices about what provokes an
error and what a warning, but I suspect that would be true whatever the
choices it made.

Speculating..., gcc does this for two reasons.  First, you generally get
better diagnostics from a successful parse than from a syntax error, so
it is not uncommon to be very lax in the syntax that is accepted and
then report some other failure when the parse tree is inspected (here,
the fact that nothing is being declared).

Secondly, a C compiler has to be able to parse declaration-like forms
in function prototypes where the name is optional:

  void f(int, const char *, void (*)(int *));

So, since it's likely that the parser can already understand "int;" it
might as well do so in order to give you that better diagnostic.

<snip>
> This was another test:
>
>     enum E {a=1};
>     {
>        typedef enum E T;
>        enum E {b=2} x;
>        T y;
>
> x is an enum of type {b=2}.

The enum constants are not part of the type, but I can see what you are
getting at.  All you know about x is that it is of some type compatible
with char or a signed or unsigned integer type capable of representing
all the listed constants.  The enumeration constants themselves (a and b
here) are of type int and play no role in the type at all once the range
of them has been used to determine the type for declared objects of the
enumeration.

> But what about y? I assuming it is of type {a=1}.

It has some integer type capable of representing the value 1.  As the
author of the implementation, you get to choose the type.

<snip>
-- 
Ben.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 02:13 +0000
  Re: C Names and Scopes David Brown <david.brown@hesbynett.no> - 2017-02-08 10:09 +0100
    Re: C Names and Scopes mark.bluemel@gmail.com - 2017-02-08 02:37 -0800
      Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 11:07 +0000
        Re: C Names and Scopes fir <profesor.fir@gmail.com> - 2017-02-08 09:03 -0800
          Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 17:19 +0000
            Re: C Names and Scopes fir <profesor.fir@gmail.com> - 2017-02-08 09:42 -0800
      Re: C Names and Scopes David Brown <david.brown@hesbynett.no> - 2017-02-08 12:08 +0100
    Re: C Names and Scopes Moai <penultimategrill@gmail.com> - 2017-02-08 19:16 -0500
      Re: C Names and Scopes David Brown <david.brown@hesbynett.no> - 2017-02-09 01:32 +0100
      Re: C Names and Scopes Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-09 08:18 -0800
      Re: C Names and Scopes Jerry Stuckle <jstucklex@attglobal.net> - 2017-02-09 12:06 -0500
  Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 10:51 +0000
  Re: C Names and Scopes Thiago Adams <thiago.adams@gmail.com> - 2017-02-08 03:11 -0800
    Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 11:39 +0000
      Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 12:06 +0000
        Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 13:31 +0000
        Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 13:40 +0000
          Re: C Names and Scopes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-08 16:39 +0000
            Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 17:51 +0000
              Re: C Names and Scopes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-08 20:56 +0000
                Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 22:08 +0000
                Re: C Names and Scopes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-08 23:27 +0000
      Re: C Names and Scopes David Brown <david.brown@hesbynett.no> - 2017-02-08 13:41 +0100
      Re: C Names and Scopes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-08 14:32 +0000
        Re: C Names and Scopes supercat@casperkitty.com - 2017-02-08 07:28 -0800
          Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 20:12 +0000
            Re: C Names and Scopes Keith Thompson <kst-u@mib.org> - 2017-02-08 12:38 -0800
              Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 21:54 +0000
                Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-08 22:40 +0000
  Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-09 18:48 +0000
    Re: C Names and Scopes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-09 19:53 +0000
      Re: C Names and Scopes Keith Thompson <kst-u@mib.org> - 2017-02-09 12:25 -0800
        Re: C Names and Scopes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-09 21:27 +0000
          Re: C Names and Scopes Keith Thompson <kst-u@mib.org> - 2017-02-09 13:57 -0800
            Re: C Names and Scopes David Brown <david.brown@hesbynett.no> - 2017-02-13 10:54 +0100
        Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-10 00:26 +0000
          Re: C Names and Scopes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-10 00:42 +0000
            Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-10 01:03 +0000
              Re: C Names and Scopes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-10 01:49 +0000
                Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-10 12:31 +0000
                Re: C Names and Scopes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-10 23:48 +0000
                Re: C Names and Scopes supercat@casperkitty.com - 2017-02-10 16:06 -0800
                Re: C Names and Scopes Keith Thompson <kst-u@mib.org> - 2017-02-10 16:22 -0800
                Re: C Names and Scopes supercat@casperkitty.com - 2017-02-12 09:17 -0800
                Re: C Names and Scopes Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-15 16:26 -0800
              Re: C Names and Scopes Keith Thompson <kst-u@mib.org> - 2017-02-09 17:56 -0800
              Re: C Names and Scopes supercat@casperkitty.com - 2017-02-10 07:42 -0800
                Re: C Names and Scopes Keith Thompson <kst-u@mib.org> - 2017-02-10 08:44 -0800
                Re: C Names and Scopes supercat@casperkitty.com - 2017-02-10 09:25 -0800
                Re: C Names and Scopes Jerry Stuckle <jstucklex@attglobal.net> - 2017-02-10 16:43 -0500
                Re: C Names and Scopes supercat@casperkitty.com - 2017-02-10 14:04 -0800
                Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-10 22:52 +0000
                Re: C Names and Scopes Andrey Tarasevich <andreytarasevich@hotmail.com> - 2017-02-10 15:10 -0800
        Re: C Names and Scopes Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-15 16:31 -0800
      Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-09 23:09 +0000
        Re: C Names and Scopes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-09 23:36 +0000
          Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-02-10 00:19 +0000
            Re: C Names and Scopes Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-10 00:38 +0000
  Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-03-04 01:23 +0000
    Re: C Names and Scopes jameskuyper@verizon.net - 2017-03-03 18:23 -0800
      Re: C Names and Scopes GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-03-04 14:42 +0100
        Re: C Names and Scopes "James R. Kuyper" <jameskuyper@verizon.net> - 2017-03-04 11:02 -0500
          Re: C Names and Scopes GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-03-04 23:35 +0100
            Re: C Names and Scopes Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-03-04 14:50 -0800
            Re: C Names and Scopes Richard Heathfield <rjh@cpax.org.uk> - 2017-03-05 13:39 +0000
              Re: C Names and Scopes GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-03-05 15:10 +0100
                Re: C Names and Scopes Richard Heathfield <rjh@cpax.org.uk> - 2017-03-05 14:34 +0000
                Re: C Names and Scopes Keith Thompson <kst-u@mib.org> - 2017-03-05 19:25 -0800
              Re: C Names and Scopes raltbos@xs4all.nl (Richard Bos) - 2017-03-06 09:37 +0000
                Re: C Names and Scopes Richard Heathfield <rjh@cpax.org.uk> - 2017-03-06 10:34 +0000
                Re: C Names and Scopes James Kuyper <jameskuyper@verizon.net> - 2017-03-06 07:23 -0500
                Re: C Names and Scopes GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-03-06 14:26 +0100
    Re: C Names and Scopes Keith Thompson <kst-u@mib.org> - 2017-03-04 11:52 -0800
      Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-03-04 20:13 +0000
        Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-03-04 20:17 +0000
        Re: C Names and Scopes Keith Thompson <kst-u@mib.org> - 2017-03-04 12:38 -0800
        Re: C Names and Scopes jameskuyper@verizon.net - 2017-03-04 13:50 -0800
          Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-03-04 22:37 +0000
            Re: C Names and Scopes jameskuyper@verizon.net - 2017-03-04 16:15 -0800
              Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-03-05 00:31 +0000
                Re: C Names and Scopes jameskuyper@verizon.net - 2017-03-04 16:47 -0800
                Re: C Names and Scopes BartC <bc@freeuk.com> - 2017-03-05 01:42 +0000
                Re: C Names and Scopes jameskuyper@verizon.net - 2017-03-04 19:20 -0800
                Re: C Names and Scopes Keith Thompson <kst-u@mib.org> - 2017-03-05 01:40 -0800

csiph-web