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


Groups > comp.lang.c > #103610

Re: C Names and Scopes

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: C Names and Scopes
Date 2017-02-10 08:44 -0800
Organization None to speak of
Message-ID <lnh942vvue.fsf@kst-u.example.com> (permalink)
References (3 earlier) <lnfujnxgbj.fsf@kst-u.example.com> <o7j18r$i8r$1@dont-email.me> <8737fm6flc.fsf@bsb.me.uk> <o7j3el$o0c$1@dont-email.me> <7155cee8-9514-46c2-afa0-4ed7ec2c2447@googlegroups.com>

Show all headers | View raw


supercat@casperkitty.com writes:
> On Thursday, February 9, 2017 at 7:04:08 PM UTC-6, Bart wrote:
>> Another example; should this be an error:
>> 
>>    struct S {int x,y;};
>>    struct S {int x,y;};
>> 
>> Most compilers say yes; one (not gcc) says no. It's hard to get a 
>> consensus on these things. To me, this is little different from 
>> repeating a function declaration.
>
> I would suggest that the most helpful behavior for a language would be to
> allow a redefinition *provided that it matches the original*, and squawk at
> a redefinition which does not match the original.  Supporting such semantics
> may have been difficult on compilers that were running with extremely limited
> resources, making it necessary for such compilers to either accept or reject
> such constructs without regard for whether they match earlier definitions.

I don't understand how that would be an advantage.

C as it's currently defined does not, in most cases, permit identical
redefinitions.  I fail to see how this causes any inconvenience.  Just
define everything *once*.

> Personally, I think the Standard should have specified that code seeking to
> be portable should avoid using such constructs, but compilers seeking to
> maximize compatibility with the existing corpus of C code should support
> them.  Having multiple header files that each say:
>
>     #ifdef FOO_STRUCT
>     #define FOO_STRUCT
>     struct foo { ... }
>     #endif
>
> makes code far less robust than it would be if each header file was allowed
> to simply declare the structure for itself *and have the compiler validate
> that it matched the expected definition*.

The usual approach, which works perfectly well, is to define
    struct foo { ... };
in exactly one header, and have any code that needs to refer to the
type include that header.  Why would you want to define it in more
than one place?

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Working, but not speaking, for JetHead Development, Inc.
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"

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