Undefined static function
John L. Beal
beal at polaris.UUCP
Thu Sep 19 03:51:27 AEST 1985
> Here's a question for all the C language lawyers out there. What should
> a C compiler make of the following:
>
> static char *tgoto();
>
> main()
> {
> .....
> if (tgoto(......).....
> .....
> }
>
> In other words, we declare a function to be static, use it, but do not
> define it in the source file. This occurs in libcurses/cr_tty.c (4.2BSD).
> The 4.2 compiler happily accepts this and links the 'static' tgoto to a
> definition in another source file. In this case it is what the author
> intended, but it should really have been thrown out by the compiler,
> methinks.
> --
> Frank Cringle, Dept. of Computer Science, Univ. of Edinburgh
> UUCP: <UK>!ukc!{hwcs,kcl-cs,ucl-cs,edcaad}!cstvax!fdc
> JANET: fdc at UK.AC.ed.cstvax or fdc at UK.AC.ed.ecsvax
>From postnews Wed Sep 18 13:49:21 1985
>
> static char *tgoto();
>
> main()
> {
> .....
> if (tgoto(......).....
> .....
> }
>
> In other words, we declare a function to be static, use it, but do not
> define it in the source file. This occurs in libcurses/cr_tty.c (4.2BSD).
> The 4.2 compiler happily accepts this and links the 'static' tgoto to a
> definition in another source file. In this case it is what the author
> intended, but it should really have been thrown out by the compiler,
> methinks.
> --
> Frank Cringle, Dept. of Computer Science, Univ. of Edinburgh
> UUCP: <UK>!ukc!{hwcs,kcl-cs,ucl-cs,edcaad}!cstvax!fdc
> JANET: fdc at UK.AC.ed.cstvax or fdc at UK.AC.ed.ecsvax
Who knows. C knows that functions are extern (K&R says that somewhere)
so that a i
char f();
will be extern. Maybe it just ignores that static in some implementations
and believes it in others?
More information about the Comp.lang.c
mailing list