[gnu.g++.bug] Compiler error in g++ 1.36

angel@FLIPPER.MIAMI.EDU (angel li) (01/16/90)

On VMS, using g++ 1.36.3-, the following code does not compile:

    #define	stdin	$$PsectAttributes_NOSHR$$stdin
    #define	stdout	$$PsectAttributes_NOSHR$$stdout
    #define	stderr	$$PsectAttributes_NOSHR$$stderr

    extern int *stdin;
    extern int *stdout;
    extern int *stderr;

    extern void frob(int *, int *);

    void
    sub()
    {
	frob(stdin, stdout);
    }

The compiler complains on lines 5,6,7:

	type name expected before `*'

If the leading "$$" characters are replaced by "_$" in lines 1, 2, and 3 ,
the file compiles cleanly.  Dollars are legal identifier characters on VMS.

tiemann@AI.MIT.EDU (Micheal Tiemann) (01/16/90)

   Date: Mon, 15 Jan 90 14:25:27 EST
   From: angel@flipper.miami.edu (angel li)


   On VMS, using g++ 1.36.3-, the following code does not compile:

       #define	stdin	$$PsectAttributes_NOSHR$$stdin
       #define	stdout	$$PsectAttributes_NOSHR$$stdout
       #define	stderr	$$PsectAttributes_NOSHR$$stderr

       extern int *stdin;
       extern int *stdout;
       extern int *stderr;

       extern void frob(int *, int *);

       void
       sub()
       {
	   frob(stdin, stdout);
       }

   The compiler complains on lines 5,6,7:

	   type name expected before `*'

   If the leading "$$" characters are replaced by "_$" in lines 1, 2, and 3 ,
   the file compiles cleanly.  Dollars are legal identifier characters on VMS.

If you want to use $, then give the compiler another token to do
internal naming.  #define NO_DOLLAR_IN_LABEL and recompile those files
which reference that #ifdef.

Michael