Re: compilation error-aCC [ bool int confusion ] (82 Views)
Reply
Occasional Contributor
vinay naik
Posts: 7
Registered: ‎07-02-2009
Message 1 of 5 (82 Views)
Accepted Solution

compilation error-aCC [ bool int confusion ]

Hello,
I am currently wrestling with a compiler error thrown while compiling a relative archaic piece of application code with aCC( A.03.70). The code compiles fine with a previous aCC(A.03.25).Platform HP-UX 11.11 PA-RISC

Error

526: "/opt/aCC/include/iostream/iostream.h", line 406 # Class member function declaration is indistinguishable from "istream
&istream::operator >>(int &)" already declared at ["/opt/aCC/include/iostream/iostream.h", line 384].
istream& operator>>(int&);
^^
Error 526: "/opt/aCC/include/iostream/iostream.h", line 563 # Class member function declaration is indistinguishable from "ostream
&ostream::operator <<(int)" already declared at ["/opt/aCC/include/iostream/iostream.h", line 547].
ostream& operator<<(bool b) { return *this << (int)b ; }
^^
Error 445: "/opt/aCC/include/iostream/iostream.h", line 563 # Cannot recover from earlier errors.
ostream& operator<<(bool b) { return *this << (int)b ; }



in iostream.h
line 406 -> istream& operator>>(int&);
line 384 -> istream& operator>>(bool&);


I am using the following compiler options
+Z -D_REENTRANT -AP -D_HPUX_SOURCE -O +DS2.0 +DA2.0 -z -D_REENTRANT -D_THREAD_SAFE -D__HPACC_THREAD_SAFE_RB_TREE -DRWSTD_MULTI_THREAD -DRW_MULTI_THREAD

I would prefer the default -AP option rather than -AA .

Can anybody provide pointers to resolve this.

Thanks
Vinay
Please use plain text.
Acclaimed Contributor
Dennis Handly
Posts: 24,901
Registered: ‎03-06-2006
Message 2 of 5 (82 Views)

Re: compilation error-aCC [ bool int confusion ]

>in iostream.h
line 406 -> istream& operator>>(int&);
line 384 -> istream& operator>>(bool&);

You probably have an evil macro that defines bool as int.

>-D_REENTRANT -D_THREAD_SAFE -DRWSTD_MULTI_THREAD -DRW_MULTI_THREAD

You can replace these by just -mt.
Please use plain text.
Advisor
Kannan M Jeganathan
Posts: 16
Registered: ‎05-11-2009
Message 3 of 5 (82 Views)

Re: compilation error-aCC [ bool int confusion ]

Use the preprocessor options -E -.i to get the preprocessed ouput of your source file. Find whether you have two instances of istream &istream::operator >>(int &). It proves that you (directly or indirectly) have defined a macro bool to be an int.

Since A.03.70 does not support any options like -dM you could use the following technique to find where you have defined the macro bool (incase it could not be find by simple grep). Include #define bool catch_bool_macro. Compile your source file with the original command line. You should get a warning with the location where the macro is (re)defined.

By the way, I see that if I define bool to an int I get the same error with A.03.25 as well like A.03.70.
Please use plain text.
Acclaimed Contributor
Dennis Handly
Posts: 24,901
Registered: ‎03-06-2006
Message 4 of 5 (82 Views)

Re: compilation error-aCC [ bool int confusion ]

[ Edited ]

>Kannan: Since A.03.70 does not support any options like -dM

Instead you use cpp.ansi:
... -E -.i +legacy_cpp -Wp,-C,-G

Then look for bool.

Please use plain text.
Occasional Contributor
vinay naik
Posts: 7
Registered: ‎07-02-2009
Message 5 of 5 (82 Views)

Re: compilation error-aCC [ bool int confusion ]

Thanks Kannan and Dennis for your valuable feedback. The issue was exactly as you'll mentioned. A redefinition of bool which was invoked in a "#ifndef HPUX" statement.
Once I provided the compiler option -DHPUX ,the redundancy was not included and compiled smoothly.

Extra thanks to Kannan for helping hunt down the error.

-Vinay
Please use plain text.
The opinions expressed above are the personal opinions of the authors, not of HP. By using this site, you accept the Terms of Use and Rules of Participation