Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Les Cargill <lcargill99@comcast.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-09 19:58 -0500 |
| Organization | A noiseless patient Spider |
| Message-ID | <mdlf9v$359$1@dont-email.me> (permalink) |
| References | <5bnrfahtskm5osi399eb9954bleglspe2k@4ax.com> |
DSF wrote:
> Hello!
>
> Is there any way to make a function local to two TUs without including
> it as static in both?
>
The *identical* function? Or just "same name, same signature"?
You can have a pointer to a static function that is also static and
local to both.
I would also not consider having a slight difference in naming between
two global functions in two TUs to be too sinful.
> Note that this question is not "life or death." I can leave said
> function in its own TU and declared public. I ask for reasons of
> learning and "correctness." (The function need only be seen by the
> two TUs, thus it would be logical for the symbol to be private to
> them.)
>
> I have a function in its own TU that is used exclusively by two
> other TUs. I know I can make it private by declaring it static within
> the TUs and placing it in them, but then there would be two copies.
>
So:
static int thing(void *a, int b, void *x)
{
....
return 0;
}
int (*getRefToThing) (void *a, int b, void *x)
{
return &thing;
}
I always make mistakes on these so it may take a bit of massaging
to get the compiler to cease jabbering.
>
> On a related subject, if there were the same scenario as above, but
> only one TU and I wanted to keep the static function in its own file
> for clarity, would it be bad form to declare it in the first TU as
> static and then include it into the main TU? Such as:
>
> -------------------------------------------------------
> /* first TU * (foo.c) /
>
> static int bar(int a, char *c);
>
> #include "bar.c"
>
> void foo(void)
> {
> ...
> d = bar(number, string);
> ...
> }
> -----------------------------------------------------
> /* "private" TU (bar.c) */
>
> int bar(int a, char *c)
> {
> ...
> }
>
> "bar.c" would be considered part of the TU "foo.c," right?
>
> DSF
> "'Later' is the beginning of what's not to be."
> D.S. Fiscus
>
'C' files including 'C' files gives some people rash. I am not one
of those people. And there's the question of how to manage the
dependencies of the included 'C' file - nothing huge, just a bit
of work. Do the includers have to include all the includes or what?
"gcc -M" doesn't care if it's a .c file.
--
Les Cargill
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll 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