Article View: comp.std.c
Article #1585Declarations with more/less detail, or "static" functins.
From: ORCUTT
Date: Sat, 11 Aug 1990 16:17
Date: Sat, 11 Aug 1990 16:17
53 lines
2081 bytes
2081 bytes
I want to place a declaration for a static function at
the beginning of a file and define the function later
in the file. What is the ANSI way to do this? If I write
static void func(void); /* Declaration. */
..
static void func(void) /* Definition. */
{
..
return;
}
H & S seem to indicate that the first "static" is
illegal. If I remove it, the declaration will default
to type "extern", causing a conflict with the function definition.
In practice, MSC 5.1 and TC 2.0 and 3.0 allow the "static" on
the declaration. If I omit the "static" on the definition,
these compilers will also declare the function "static" from
the previous declaration. On the other hand, High-C follows
H & S more strictly in that it changes the "static" on the
declaration to "extern", with a warning. However, High-C
allows the "static" on the definition to override the "extern"
assumed from the declaration, which also seems to be
non-standard behavior.
Is there an ANSI approved way to declare a function that
will be "static" in a file before it is defined? This is
useful to that functions earlier in the file can reference
the function with the correct type of return value and
prototype.
The High-C way seems more in tune with the standard, which
states that a declaration can "add detail" to an earlier one;
but the High-C compiler prints about 5 lines of diagnostic
messages when it sees the "static" on the function definition,
although it does the right thing.
Does the standard allow one to make a declaration with
less detail of an object after it has been declared
with greater detail? For example, are the declarations
double cos(double x);
and
double cos();
compatible?
Thanks for your attention to my ramblings...
Technical Details
Message-ID:
<84313@cc.utah.edu>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!mailrus!hellgate.utah.edu!cc.utah.edu!orcuttShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!mailrus!hellgate.utah.edu!cc.utah.edu!orcutt From: ORCUTT@cc.utah.edu Newsgroups: comp.std.c Subject: Declarations with more/less detail, or "static" functins. Message-ID: <84313@cc.utah.edu> Date: 11 Aug 90 10:17:15 MDT Lines: 53