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


Groups > comp.lang.c > #94597

Re: Why I use gcc

From BartC <bc@freeuk.com>
Newsgroups comp.lang.c
Subject Re: Why I use gcc
Date 2016-10-08 15:05 +0100
Organization A noiseless patient Spider
Message-ID <ntauf8$ld2$1@dont-email.me> (permalink)
References (13 earlier) <28fd7881-5b39-4fa3-a41f-9b9431d855f3@googlegroups.com> <nt9dps$iea$1@dont-email.me> <ntaf2c$pqq$1@dont-email.me> <ntai65$ddq$1@dont-email.me> <8737k7x9ac.fsf@bsb.me.uk>

Show all headers | View raw


On 08/10/2016 14:25, Ben Bacarisse wrote:
> BartC <bc@freeuk.com> writes:
>
>> On 08/10/2016 10:42, James Harris wrote:
>>> On 08/10/2016 01:15, BartC wrote:
>>>> On 07/10/2016 20:26, Thiago Adams wrote:
>>
>>>>> Yes.. I think strange declarations should be style warnings!
>>>>>
>>>>> int i, f(), (*f2)(), *p, a[1];
>>>>> typedef int i, k;
>>>>>
>>>>> I don't use more than one declarator in my code.
>>>>
>>>> That's one of those features of C that must have seemed a good idea at
>>>> the time.
>>>>
>>>> I /think/ your example above is declaring:
>>>>
>>>> * An int
>>>> * A function returning int (presumably this is an extern or forward
>>>>   declaration)
>>>> * A pointer to a function
>>>
>>>  ... returning an int?
>
> Yes.
>
>> I guess so, because the type on the left is what you get after you use
>> each name in an expression in the form that is used in the declaration
>> (that was the big idea behind it). These all yield an int value:
>>
>>  i;
>>  f();          // can also be written (*f)()
>
> Can also be written (&f)(), (**f)(), (&*&f)() and (***&*&f)().  (I hope
> at least one of these will add to you sense of wonder at C.).
>
>>  (*f2)();      // can also be written f2() (or (**f2()))
>
> Can also be written (*&f)(), (*&*f)() and in many other ways but not all
> the ones above.
>
>>  *p;           // can also be written p[0] or *(p+0)
>
> Or 0[p], *(p+1-1) (but not always as *(p+2-2) though *(p+(2-2)) is
> fine).  Other possibilities include (-1)[p+1] (but but not 1[p-1]),
> (&*p)[0] and (*&p)[0].
>
>>  a[0];         // can also be written a[i] or *(a+i)
>
> Can also be...  no, I won't go on.  You get the idea -- that there are
> equivalent expressions is not, of itself, interesting.

You're missing my point, perhaps deliberately.

C type declarations are the way they are because of the 'declaration 
mirrors use' rule. I showed that such names are not always written, as 
terms, the way they appear in the declaration. You don't need to drag in 
silly examples.

Single level function pointers usually ARE written as fp() rather than 
(*fp)().

Pointers to T often ARE written as as T[i] rather than *T.

While T[N] arrays are NEVER actually accessed as T[N] (as that would be 
a bounds error).

Then there are all the unadorned names that I also listed (ie. f, f2, p 
and a in the above examples) which yield types that are different from 
headlining 'int' type that appears on the left.

>> So they can be written in myriad different ways anyway. But if written
>> like this:
>>
>>  i;     // yields int type
>>  f;     // yields pointer to function
>>  f2;    // yields pointer to function
>>  p;     // yields pointer to int
>>  a;     // yields pointer to int
>
> True provided you want to hide what's happening.  The primary expression
> 'f' is a function designator and 'a' is an expression with array type.

Nonsense.

If I pass 'f2' to a function or assign to something else then I'm 
passing or assigning a function pointer, not an int.

If I pass 'a' to a function, or assign it to something else, then I'm 
passing or assigning a pointer to int, not an int.

But even the 'function designator' or 'array expression' are not ints, 
which is my objection. The C type syntax gives undue prominence to the 
wrong end of the type!

>> Yes. The way I'd write these in my language
> <snip>
>> [1]int a               # ('a' yields array not pointer)
>
> And in C.  The bit you don't like is what happens next, not the meaning
> of the primary expression 'a'.

I don't think so. If I write (in my language):

  [N]int a, b

  b := a

then the contents of b are copied to a. If I try the same in C:

  int a[N], b[N];

  b = a;

then I get an error. One or both sides isn't an array. It doesn't really 
matter to the user if one of the expressions /might/ possibly have array 
type for some transient period just before it gets transformed into 
something else, as that's not helpful!

-- 
Bartc

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


Thread

Why I use gcc BartC <bc@freeuk.com> - 2016-09-26 14:31 +0100
  Re: Why I use gcc David Brown <david.brown@hesbynett.no> - 2016-09-26 15:45 +0200
    Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-26 15:22 +0100
      Re: Why I use gcc David Brown <david.brown@hesbynett.no> - 2016-09-26 16:31 +0200
      Re: Why I use gcc Tim Rentsch <txr@alumni.caltech.edu> - 2016-09-27 15:05 -0700
        Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-28 00:42 +0100
          Re: Why I use gcc Tim Rentsch <txr@alumni.caltech.edu> - 2016-09-28 09:50 -0700
            Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-28 18:39 +0100
              Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-07 12:28 +0100
                Re: Why I use gcc Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-10-07 04:36 -0700
              Re: Why I use gcc Thiago Adams <thiago.adams@gmail.com> - 2016-10-07 05:31 -0700
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-07 14:00 +0100
                Re: Why I use gcc Thiago Adams <thiago.adams@gmail.com> - 2016-10-07 07:48 -0700
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-07 17:36 +0100
                Re: Why I use gcc Thiago Adams <thiago.adams@gmail.com> - 2016-10-07 10:38 -0700
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-07 19:47 +0100
                Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-10-07 12:25 -0700
                Re: Why I use gcc Thiago Adams <thiago.adams@gmail.com> - 2016-10-07 12:26 -0700
                Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-10-07 13:10 -0700
                Re: Why I use gcc Thiago Adams <thiago.adams@gmail.com> - 2016-10-07 13:22 -0700
                Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-10-07 14:13 -0700
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-08 01:15 +0100
                Re: Why I use gcc James Harris <james.harris.1@gmail.com> - 2016-10-08 10:42 +0100
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-08 11:36 +0100
                Re: Why I use gcc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-10-08 14:25 +0100
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-08 15:05 +0100
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-08 16:29 +0100
                Re: Why I use gcc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-10-08 17:21 +0100
                Re: Why I use gcc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-10-08 16:39 +0100
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-08 16:58 +0100
                Re: Why I use gcc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-10-08 21:15 +0100
                Re: Why I use gcc supercat@casperkitty.com - 2016-10-08 11:27 -0700
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-08 20:09 +0100
                Re: Why I use gcc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-10-08 21:16 +0100
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-08 21:28 +0100
                Re: Why I use gcc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-10-09 01:19 +0100
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-09 01:36 +0100
                Re: Why I use gcc Thiago Adams <thiago.adams@gmail.com> - 2016-10-08 09:32 -0700
                Re: Why I use gcc Tim Rentsch <txr@alumni.caltech.edu> - 2016-10-09 03:44 -0700
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-09 12:07 +0100
                Re: Why I use gcc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-10-09 12:12 +0100
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-09 12:37 +0100
                Re: Why I use gcc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-10-09 13:57 +0100
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-09 14:32 +0100
                Re: Why I use gcc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-10-09 20:00 +0100
                Re: Why I use gcc Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-10-09 13:14 -0700
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-09 22:54 +0100
                Re: Why I use gcc Tim Rentsch <txr@alumni.caltech.edu> - 2016-10-15 14:40 -0700
                Re: Why I use gcc James Kuyper <jameskuyper@verizon.net> - 2016-10-07 10:37 -0400
                Re: Why I use gcc supercat@casperkitty.com - 2016-10-07 07:52 -0700
                Re: Why I use gcc jameskuyper@verizon.net - 2016-10-07 09:10 -0700
                Re: Why I use gcc supercat@casperkitty.com - 2016-10-07 10:48 -0700
                Re: Why I use gcc jameskuyper@verizon.net - 2016-10-07 16:21 -0700
                Re: Why I use gcc supercat@casperkitty.com - 2016-10-08 11:15 -0700
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-07 17:12 +0100
                Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-10-07 12:20 -0700
                Re: Why I use gcc Thiago Adams <thiago.adams@gmail.com> - 2016-10-07 12:32 -0700
  Re: Why I use gcc Richard Heathfield <rjh@cpax.org.uk> - 2016-09-26 14:45 +0100
    Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-26 15:12 +0100
      Re: Why I use gcc Richard Heathfield <rjh@cpax.org.uk> - 2016-09-26 15:26 +0100
        Re: Why I use gcc supercat@casperkitty.com - 2016-09-26 08:00 -0700
          Re: Why I use gcc Tim Rentsch <txr@alumni.caltech.edu> - 2016-09-28 10:49 -0700
        Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-26 17:30 +0100
          Re: Why I use gcc David Brown <david.brown@hesbynett.no> - 2016-09-26 21:12 +0200
            Re: Why I use gcc jacobnavia <jacob@jacob.remcomp.fr> - 2016-09-26 22:09 +0200
            Re: Why I use gcc supercat@casperkitty.com - 2016-09-26 13:32 -0700
              Re: Why I use gcc jacobnavia <jacob@jacob.remcomp.fr> - 2016-09-26 23:14 +0200
                Re: Why I use gcc Richard Heathfield <rjh@cpax.org.uk> - 2016-09-26 22:47 +0100
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-27 01:13 +0100
                Re: Why I use gcc Richard Heathfield <rjh@cpax.org.uk> - 2016-09-27 01:18 +0100
                Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-09-26 17:41 -0700
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-27 02:01 +0100
                Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-09-27 08:41 -0700
                Re: Why I use gcc James Harris <james.harris.1@gmail.com> - 2016-09-27 01:41 +0100
                Re: Why I use gcc jameskuyper@verizon.net - 2016-09-26 18:15 -0700
                Re: Why I use gcc Gareth Owen <gwowen@gmail.com> - 2016-09-27 20:59 +0100
                Re: Why I use gcc Richard Heathfield <rjh@cpax.org.uk> - 2016-09-27 21:50 +0100
                Re: Why I use gcc Tim Rentsch <txr@alumni.caltech.edu> - 2016-09-28 06:26 -0700
                Re: Why I use gcc gazelle@shell.xmission.com (Kenny McCormack) - 2016-09-27 23:23 +0000
                Re: Why I use gcc Noob <root@127.0.0.1> - 2016-10-08 00:12 +0200
                Re: Why I use gcc James Kuyper <jameskuyper@verizon.net> - 2016-10-07 23:11 -0400
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-08 10:58 +0100
                Re: Why I use gcc jameskuyper@verizon.net - 2016-10-08 07:07 -0700
                Re: Why I use gcc Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-10-07 21:44 -0700
              Re: Why I use gcc David Brown <david.brown@hesbynett.no> - 2016-09-27 09:48 +0200
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-27 11:22 +0100
                Re: Why I use gcc David Brown <david.brown@hesbynett.no> - 2016-09-27 13:52 +0200
                Re: Why I use gcc jacobnavia <jacob@jacob.remcomp.fr> - 2016-09-27 14:47 +0200
                Re: Why I use gcc David Brown <david.brown@hesbynett.no> - 2016-09-27 15:18 +0200
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-27 14:38 +0100
                Re: Why I use gcc jacobnavia <jacob@jacob.remcomp.fr> - 2016-09-27 17:21 +0200
                Re: Why I use gcc jacobnavia <jacob@jacob.remcomp.fr> - 2016-09-27 17:17 +0200
                Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-09-27 08:52 -0700
                Re: Why I use gcc Robert Wessel <robertwessel2@yahoo.com> - 2016-09-30 02:00 -0500
                Re: Why I use gcc supercat@casperkitty.com - 2016-09-27 07:18 -0700
                Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-09-27 08:46 -0700
                Re: Why I use gcc supercat@casperkitty.com - 2016-09-27 09:11 -0700
                Re: Why I use gcc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-09-27 13:33 +0100
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-27 14:13 +0100
                Re: Why I use gcc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-09-27 15:30 +0100
                Re: Why I use gcc supercat@casperkitty.com - 2016-09-27 08:29 -0700
                Re: Why I use gcc supercat@casperkitty.com - 2016-09-27 07:11 -0700
            Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-26 21:43 +0100
            Re: Why I use gcc raltbos@xs4all.nl (Richard Bos) - 2016-09-30 17:50 +0000
          Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-27 01:04 +0100
            Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-09-26 17:39 -0700
              Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-27 01:49 +0100
                Re: Why I use gcc Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-09-27 11:39 +0100
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-09-27 11:56 +0100
                Re: Why I use gcc Tim Rentsch <txr@alumni.caltech.edu> - 2016-09-27 15:15 -0700
                Re: Why I use gcc David Brown <david.brown@hesbynett.no> - 2016-09-28 08:55 +0200
    Re: Why I use gcc jacobnavia <jacob@jacob.remcomp.fr> - 2016-09-26 22:11 +0200
      Re: Why I use gcc Richard Heathfield <rjh@cpax.org.uk> - 2016-09-26 22:04 +0100
  Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-10 11:39 +0100
    Re: Why I use gcc already5chosen@yahoo.com - 2016-10-10 07:32 -0700
      Re: Why I use gcc Richard Heathfield <rjh@cpax.org.uk> - 2016-10-10 16:17 +0100
        Re: Why I use gcc Robert Wessel <robertwessel2@yahoo.com> - 2016-10-10 21:09 -0500
          Re: Why I use gcc Richard Heathfield <rjh@cpax.org.uk> - 2016-10-11 04:18 +0100
          Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-11 10:56 +0100
            Re: Why I use gcc already5chosen@yahoo.com - 2016-10-11 04:08 -0700
              Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-11 13:36 +0100
                Re: Why I use gcc already5chosen@yahoo.com - 2016-10-11 06:20 -0700
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-11 14:29 +0100
                Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-10-11 09:31 -0700
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-11 19:38 +0100
                Re: Why I use gcc supercat@casperkitty.com - 2016-10-11 12:23 -0700
                Re: Why I use gcc jacobnavia <jacob@jacob.remcomp.fr> - 2016-10-11 23:19 +0200
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-11 23:26 +0100
                Re: Why I use gcc jacobnavia <jacob@jacob.remcomp.fr> - 2016-10-12 09:01 +0200
                Re: Why I use gcc supercat@casperkitty.com - 2016-10-12 08:55 -0700
                Re: Why I use gcc already5chosen@yahoo.com - 2016-10-12 10:52 -0700
                Re: Why I use gcc supercat@casperkitty.com - 2016-10-12 12:34 -0700
                Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-10-12 13:18 -0700
                Re: Why I use gcc luser droog <luser.droog@gmail.com> - 2016-10-12 13:24 -0700
                Re: Why I use gcc crankypuss <undisclosedUserid@gmail.com> - 2016-10-13 13:31 -0600
                Re: Why I use gcc Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-10-16 03:00 -0700
                Re: Why I use gcc crankypuss <undisclosedUserid@gmail.com> - 2016-10-16 04:46 -0600
                Re: Why I use gcc Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-10-16 04:05 -0700
                Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-10-11 12:28 -0700
                Re: Why I use gcc Thiago Adams <thiago.adams@gmail.com> - 2016-10-11 13:24 -0700
                Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-11 21:28 +0100
                Re: Why I use gcc gazelle@shell.xmission.com (Kenny McCormack) - 2016-10-11 20:43 +0000
                Re: Why I use gcc Robert Wessel <robertwessel2@yahoo.com> - 2016-10-11 23:40 -0500
            Re: Why I use gcc already5chosen@yahoo.com - 2016-10-11 04:40 -0700
      Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-10 18:19 +0100
    Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-10-10 09:08 -0700
      Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-10 18:04 +0100
        Re: Why I use gcc supercat@casperkitty.com - 2016-10-10 10:39 -0700
        Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-10-10 11:25 -0700
      Re: Why I use gcc Jerry Stuckle <jstucklex@attglobal.net> - 2016-10-10 17:05 -0400
        Re: Why I use gcc supercat@casperkitty.com - 2016-10-10 14:46 -0700
    Re: Why I use gcc BartC <bc@freeuk.com> - 2016-10-15 13:39 +0100
      Re: Why I use gcc Keith Thompson <kst-u@mib.org> - 2016-10-15 13:40 -0700
        Re: Why I use gcc already5chosen@yahoo.com - 2016-10-15 13:46 -0700

csiph-web