This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
(printf) ("hello world\n");
- From: mec dot gnu at mindspring dot com (Michael Elizabeth Chastain)
- To: gcc at gcc dot gnu dot org
- Date: Tue, 9 Dec 2003 15:40:37 -0500 (EST)
- Subject: (printf) ("hello world\n");
I have a language lawyer question.
int main ()
{
(printf) ("hello world\n");
return 0;
}
Is this a conforming C program?
There is no "#include <stdio.h>" so there is no declaration
in scope for printf.
gcc 2.95.3 and gcc 3.3.2 both say:
hello.c: In function `main':
hello.c:3: `printf' undeclared (first use in this function)
hello.c:3: (Each undeclared identifier is reported only once
hello.c:3: for each function it appears in.)
This happens with each of:
-std=iso9899:1990
-std=iso9899:199409
-std=iso9899:1999
But the HP ansi-c and aCC compilers accept it just fine.
This kind of code comes out of a macro expansion with readline 4.3
and gcc 3.3.2 on native hppa2.0w-hp-hpux11.11. It's the end
result of an interaction between multibyte support in hpux11
and a strange-looking workaround in readline.
Of course the question "is this conforming ..." depends on a particular
standard. So I think I am asking three questions, one for each of the
three standards.
If the program is not conforming, then I can work on a patch for
readline. But if the program is conforming, then I can file a PR
against gcc (and I'll still have to patch readline).
(Personally I would be happier if this program is not conforming.)
Michael C