Bug 12003 - FILE* variable initialized to stderr (not constant error)
Summary: FILE* variable initialized to stderr (not constant error)
Status: RESOLVED INVALID
Alias: None
Product: gcc
Classification: Unclassified
Component: c (show other bugs)
Version: 3.3.1
: P2 minor
Target Milestone: 3.4.0
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-08-21 04:12 UTC by Bradford Castalia
Modified: 2005-07-23 22:49 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Bradford Castalia 2003-08-21 04:12:05 UTC
The code:

#include <stdio.h>
FILE *OUTPUT = stderr;

main ()
{
fprintf (OUTPUT, "Try this!\n");
exit (0);
}

Fails to build:

idaeim:castalia>> gcc try.c -o try
try.c:4: error: initializer element is not constant

idaeim:castalia>> gcc --version
gcc (GCC) 3.3.1 [FreeBSD]

idaeim:castalia>> uname -a
FreeBSD idaeim 4.8-STABLE FreeBSD 4.8-STABLE #0: Sun Jul 13 13:11:51 MST
2003     root@idaeim:/usr/obj/usr/src/sys/IDAEIM  i386

N.B.: The same problem occurs with gcc 3.2.1,
but it does NOT occur with gcc 3.2.2 for Solaris.
Comment 1 Andrew Pinski 2003-08-21 11:50:22 UTC
Note stderr is defined by the libc, not by GCC so that is why it worked in Solaris and not 
in FreeBSD but also the c standard allows stderr/stdout/stdin to be non-constant values 
so this is a non-bug.
Comment 2 Joseph S. Myers 2003-08-21 12:46:16 UTC
Subject: Re:  FILE* variable initialized to stderr (not constant
 error)

On Thu, 21 Aug 2003, pinskia at gcc dot gnu dot org wrote:

> Note stderr is defined by the libc, not by GCC so that is why it worked
> in Solaris and not in FreeBSD but also the c standard allows
> stderr/stdout/stdin to be non-constant values so this is a non-bug.

It is also explicitly listed as a non-bug in the bug reporting
instructions, under "Cannot initialize a static variable with stdin.".  
Perhaps mentioning stdout and stderr there as well would make bug
submitters more likely to see that this non-bug is what they're
encountering?  (And indicating that FreeBSD now has this property as well,
not just GNU libc.)

Comment 3 Bradford Castalia 2003-08-21 15:45:01 UTC
Subject: Re:  FILE* variable initialized to stderr (not constant 
 error)

Thanks for the prompt reply. You've confirmed my suspicions.

This does create a really awkward situation for C code that expects to
initialize error/warning reporting FILE* variables to stderr by default.
Any suggestions for a workaround?

Thnx,

Bradford Castalia                                 Senior Systems Analyst
Planetary Image Research Laboratory                University of Arizona


jsm at polyomino dot org dot uk wrote:
> 
> PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12003
> 
> ------- Additional Comments From jsm at polyomino dot org dot uk  2003-08-21 12:46 -------
> Subject: Re:  FILE* variable initialized to stderr (not constant
>  error)
> 
> On Thu, 21 Aug 2003, pinskia at gcc dot gnu dot org wrote:
> 
> > Note stderr is defined by the libc, not by GCC so that is why it worked
> > in Solaris and not in FreeBSD but also the c standard allows
> > stderr/stdout/stdin to be non-constant values so this is a non-bug.
> 
> It is also explicitly listed as a non-bug in the bug reporting
> instructions, under "Cannot initialize a static variable with stdin.".
> Perhaps mentioning stdout and stderr there as well would make bug
> submitters more likely to see that this non-bug is what they're
> encountering?  (And indicating that FreeBSD now has this property as well,
> not just GNU libc.)
> 
> ------- You are receiving this mail because: -------
> You reported the bug, or are watching the reporter.