🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.c
Article #1585

Declarations with more/less detail, or "static" functins.

#1585
From: ORCUTT
Date: Sat, 11 Aug 1990 16:17
53 lines
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!orcutt

Show 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