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


Groups > comp.lang.c > #142999

Re: Scopes of identifiers

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: Scopes of identifiers
Date 2019-04-10 20:58 -0700
Organization None to speak of
Message-ID <lnk1g12nx8.fsf@kst-u.example.com> (permalink)
References <098da5fe-31d3-47b7-b695-d4faea10b366@googlegroups.com> <e9d0004b-6a21-43ef-98f6-16ed2152d985@googlegroups.com>

Show all headers | View raw


Thiago Adams <thiago.adams@gmail.com> writes:
> On Wednesday, April 10, 2019 at 8:16:14 PM UTC-3, Thiago Adams wrote:
>> How scopes are implemented in C compilers?
>
> It is also interesting that structs don't introduce scopes.
>
> struct X
> {
>   struct X2
>   {
>     int i;
>   } x2;
>  
>   int i;
> };

A member name is associated with its enclosing type, not with a scope.
You can't use the name i without prefixing it with an expression of the
appropriate type followed by a "." or "->" operator.

[...]

> And I don't have much idea if declaring a function
> in a function scope makes sense.
>
> Functions are always in a global scope, but I can declare it 
> in a function scope?
>
> void F()
> {
>   void F3();
> }
>
> void F4()
> {
>   F3();
> }

First, some terminology.  There is no "global scope", and "function
scope" applies only to labels.  See N1570 6.2.1.

Something declared outside any function has file scope.  Something
declared inside a function definition has block scope.  (There's also a
"function prototype scope".)

You can declare (but not define) a function at block scope, but there's
rarely a good reason to do so.  In old code, you might have declared a
function inside a block in which it's used, but these days it's more
common to declare functions at file scope (if you need a forward
declaration), or just to #include the appropriate header (which will
declare the function at file scope for you).

For example, an old "hello, world" program might look something like
this:

    main() {
        int printf();
        printf("hello, world\n");
    }

but in modern C you'd just #include <stdio.h>.  (Actually in ancient C
you probably wouldn't have bothered to declare printf, since it returns
an int and the call would be resolved correctly.)

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Will write code for food.
void Void(void) { Void(); } /* The recursive call of the void */

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


Thread

Scopes of identifiers Thiago Adams <thiago.adams@gmail.com> - 2019-04-10 16:15 -0700
  Re: Scopes of identifiers Bart <bc@freeuk.com> - 2019-04-11 00:33 +0100
    Re: Scopes of identifiers Thiago Adams <thiago.adams@gmail.com> - 2019-04-10 16:45 -0700
    Re: Scopes of identifiers Thiago Adams <thiago.adams@gmail.com> - 2019-04-10 18:31 -0700
  Re: Scopes of identifiers Thiago Adams <thiago.adams@gmail.com> - 2019-04-10 16:34 -0700
    Re: Scopes of identifiers Robert Wessel <robertwessel2@yahoo.com> - 2019-04-10 20:50 -0500
    Re: Scopes of identifiers James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-04-10 20:02 -0700
    Re: Scopes of identifiers Keith Thompson <kst-u@mib.org> - 2019-04-10 20:58 -0700
      Re: Scopes of identifiers luser droog <luser.droog@gmail.com> - 2019-04-10 21:48 -0700
      Re: Scopes of identifiers Andrey Tarasevich <andreytarasevich@hotmail.com> - 2019-04-11 11:57 -0700
        Re: Scopes of identifiers scott@slp53.sl.home (Scott Lurndal) - 2019-04-11 19:12 +0000
          Re: Scopes of identifiers Thiago Adams <thiago.adams@gmail.com> - 2019-04-11 12:35 -0700
            Re: Scopes of identifiers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-04-12 01:11 +0100
              Re: Scopes of identifiers Thiago Adams <thiago.adams@gmail.com> - 2019-04-12 05:29 -0700
                Re: Scopes of identifiers Thiago Adams <thiago.adams@gmail.com> - 2019-04-12 05:39 -0700
        Re: Scopes of identifiers Keith Thompson <kst-u@mib.org> - 2019-04-11 14:00 -0700
          Re: Scopes of identifiers Nick Bowler <nbowler@draconx.ca> - 2019-04-15 19:48 +0000
    Re: Scopes of identifiers Bart <bc@freeuk.com> - 2019-04-11 10:36 +0100
      Re: Scopes of identifiers Bart <bc@freeuk.com> - 2019-04-11 14:25 +0100
        Re: Scopes of identifiers Keith Thompson <kst-u@mib.org> - 2019-04-11 10:20 -0700
    Re: Scopes of identifiers Thiago Adams <thiago.adams@gmail.com> - 2019-04-11 05:00 -0700
    Re: Scopes of identifiers Thiago Adams <thiago.adams@gmail.com> - 2019-04-11 06:42 -0700
      Re: Scopes of identifiers James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-04-11 08:11 -0700
  Re: Scopes of identifiers BGB <cr88192@gmail.com> - 2019-04-10 22:35 -0500
    Re: Scopes of identifiers Keith Thompson <kst-u@mib.org> - 2019-04-10 22:04 -0700
      Re: Scopes of identifiers BGB <cr88192@gmail.com> - 2019-04-11 05:46 -0500
  Re: Scopes of identifiers John Bode <jfbode1029@gmail.com> - 2019-04-11 12:04 -0700
    Re: Scopes of identifiers James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-04-11 13:18 -0700
    Re: Scopes of identifiers Keith Thompson <kst-u@mib.org> - 2019-04-11 14:31 -0700
  Re: Scopes of identifiers Andrey Tarasevich <andreytarasevich@hotmail.com> - 2019-04-11 12:28 -0700
    Re: Scopes of identifiers Thiago Adams <thiago.adams@gmail.com> - 2019-04-11 12:50 -0700
    Re: Scopes of identifiers James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-04-11 14:20 -0700
      Re: Scopes of identifiers Thiago Adams <thiago.adams@gmail.com> - 2019-04-11 14:43 -0700
      Re: Scopes of identifiers Andrey Tarasevich <andreytarasevich@hotmail.com> - 2019-04-11 15:04 -0700
        Re: Scopes of identifiers Keith Thompson <kst-u@mib.org> - 2019-04-11 17:08 -0700
          Re: Scopes of identifiers Andrey Tarasevich <andreytarasevich@hotmail.com> - 2019-04-11 18:45 -0700
            Re: Scopes of identifiers James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-04-11 23:16 -0400
            Re: Scopes of identifiers Keith Thompson <kst-u@mib.org> - 2019-04-11 20:19 -0700
            Re: Scopes of identifiers Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-04-12 14:39 -0700
            Re: Scopes of identifiers Ike Naar <ike@sdf.lonestar.org> - 2019-04-13 20:02 +0000
      Re: Scopes of identifiers James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-04-11 23:26 -0400

csiph-web