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


Groups > comp.lang.c > #58937

Re: Is there any way to make a function local to two TUs without including it as static in both?

From Kaz Kylheku <kaz@kylheku.com>
Newsgroups comp.lang.c
Subject Re: Is there any way to make a function local to two TUs without including it as static in both?
Date 2015-03-25 17:46 +0000
Organization Aioe.org NNTP Server
Message-ID <20150325103719.927@kylheku.com> (permalink)
References <5bnrfahtskm5osi399eb9954bleglspe2k@4ax.com> <mdlf9v$359$1@dont-email.me> <kfn4mpaf9ed.fsf@x-alumni2.alumni.caltech.edu> <descriptor-20150325004343@ram.dialup.fu-berlin.de> <kfnpp7xasva.fsf@x-alumni2.alumni.caltech.edu>

Show all headers | View raw


On 2015-03-25, Tim Rentsch <txr@alumni.caltech.edu> wrote:
> ram@zedat.fu-berlin.de (Stefan Ram) writes:
>
>> Tim Rentsch <txr@alumni.caltech.edu> writes:
>>> In C functions don't have signatures, they have types.
>>
>>   In C, a function type is characterized by its return
>>   type and the number and types of its parameters.
>>
>>   The corresponding concept in Java is not >>signature<<,
>>   but >>descriptor<< (signature plus return type).
>
> Do you mean that Java calls a "descriptor" (in the case of
> functions) what in C would be called a type?  The word
> "signature" does not have a language-independent meaning.
> (The word "type" means pretty much the same thing in
> most languages, I believe.)

In some non-C languages, "signature" sometimes means some aspect
of the type of the funtion that is less than the complete type---usually
the type info of the argument list.

(The word for the entire type is just "type"; it would be superfluous
to use "signature" for this.)

The signature concept matters in situations like overload selection, where
argument types are considered, but not return value.

Example: C++. We may not have this overload situation:

  double foo(int, int);
  int foo(int, int);

Though the two declarations give different function types, the
signatures of those two function types are the same.

Why we may not have that overload situation is that overload resolution
is a synthesized semantic attribute: that is to say, when a function
call is resolved with regard to overloads, only its constituent expressions
are considered, and not the surrounding expression context.

So this doesn't resolve the situation:

  double x = foo(1, 2); // go to double(int, int)? Wishful thinking!
  int y = foo(3, 4);    // ditto w.r.t.  int(int, int).

Only the contents of the foo(1, 2) expression are considered
to come up with what is to be called, without regard to how the
return type fits into the surrounding context. If that were
considered, then the overload resolution would be a "synthesized
semantic attribute" (one computed from parent and sibling
nodes of the abstract syntax tree, not only bottom-up from the children).

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


Thread

Is there any way to make a function local to two TUs without including it as static in both? DSF <notavalid@address.here> - 2015-03-09 15:02 -0400
  Re: Is there any way to make a function local to two TUs without including it as static in both? James Kuyper <jameskuyper@verizon.net> - 2015-03-09 15:22 -0400
    Re: Is there any way to make a function local to two TUs without including it as static in both? Richard Heathfield <rjh@cpax.org.uk> - 2015-03-09 19:34 +0000
  Re: Is there any way to make a function local to two TUs without including it as static in both? Keith Thompson <kst-u@mib.org> - 2015-03-09 12:47 -0700
    Re: Is there any way to make a function local to two TUs without including it as static in both? Richard Heathfield <rjh@cpax.org.uk> - 2015-03-09 21:33 +0000
      Re: Is there any way to make a function local to two TUs without including it as static in both? Keith Thompson <kst-u@mib.org> - 2015-03-10 07:28 -0700
        Re: Is there any way to make a function local to two TUs without including it as static in both? Richard Heathfield <rjh@cpax.org.uk> - 2015-03-10 14:59 +0000
          Re: Is there any way to make a function local to two TUs without including it as static in both? Keith Thompson <kst-u@mib.org> - 2015-03-10 10:37 -0700
            Re: Is there any way to make a function local to two TUs without including it as static in both? Richard Heathfield <rjh@cpax.org.uk> - 2015-03-10 18:45 +0000
  Re: Is there any way to make a function local to two TUs without including it as static in both? Lőrinczy Zsigmond <nospam@for.me> - 2015-03-09 21:04 +0100
  Re: Is there any way to make a function local to two TUs without including it as static in both? August Karlstrom <fusionfile@gmail.com> - 2015-03-09 21:39 +0100
  Re: Is there any way to make a function local to two TUs without including it as static in both? Kaz Kylheku <kaz@kylheku.com> - 2015-03-09 21:20 +0000
  Re: Is there any way to make a function local to two TUs without including it as static in both? Robert Wessel <robertwessel2@yahoo.com> - 2015-03-09 19:23 -0500
    Re: Is there any way to make a function local to two TUs without including it as static in both? wssimms@gmail.com - 2015-03-09 21:42 -0700
      Re: Is there any way to make a function local to two TUs without including it as static in both? Robert Wessel <robertwessel2@yahoo.com> - 2015-03-10 04:52 -0500
    Re: Is there any way to make a function local to two TUs without including it as static in both? Keith Thompson <kst-u@mib.org> - 2015-03-10 07:35 -0700
      Re: Is there any way to make a function local to two TUs without including it as static in both? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-03-10 12:53 -0700
  Re: Is there any way to make a function local to two TUs without including it as static in both? Les Cargill <lcargill99@comcast.com> - 2015-03-09 19:58 -0500
    Re: Is there any way to make a function local to two TUs without including it as static in both? Tim Rentsch <txr@alumni.caltech.edu> - 2015-03-24 13:06 -0700
      Re: Is there any way to make a function local to two TUs without including it as static in both? Les Cargill <lcargill99@comcast.com> - 2015-03-24 20:03 -0500
        Re: Is there any way to make a function local to two TUs without including it as static in both? James Kuyper <jameskuyper@verizon.net> - 2015-03-25 10:26 -0400
        Re: Is there any way to make a function local to two TUs without including it as static in both? Tim Rentsch <txr@alumni.caltech.edu> - 2015-03-25 10:36 -0700
          Re: Is there any way to make a function local to two TUs without including it as static in both? Kaz Kylheku <kaz@kylheku.com> - 2015-03-25 17:47 +0000
            Re: Is there any way to make a function local to two TUs without including it as static in both? Tim Rentsch <txr@alumni.caltech.edu> - 2015-03-25 16:03 -0700
      Re: Is there any way to make a function local to two TUs without including it as static in both? Tim Rentsch <txr@alumni.caltech.edu> - 2015-03-25 10:28 -0700
        Re: Is there any way to make a function local to two TUs without including it as static in both? Kaz Kylheku <kaz@kylheku.com> - 2015-03-25 17:46 +0000
          [OT] Re: meaning of "signature" in other languages Tim Rentsch <txr@alumni.caltech.edu> - 2015-03-25 16:01 -0700
        Re: Is there any way to make a function local to two TUs without including it as static in both? Tim Rentsch <txr@alumni.caltech.edu> - 2015-03-28 09:05 -0700

csiph-web