You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2006/06/30 01:19:31 UTC
[jira] Created: (STDCXX-244) [HP aCC] no abs() in when
is #included first
[HP aCC] no abs() in <stdlib.h> when <math.h> is #included first
----------------------------------------------------------------
Key: STDCXX-244
URL: http://issues.apache.org/jira/browse/STDCXX-244
Project: C++ Standard Library
Type: Bug
Components: External
Environment: HP aCC all versions going as far back as 3.00 on HP-UX as old as 11.00
Reporter: Martin Sebor
$ cat t.cpp && aCC -AA +nostl -I/usr/include t.cpp
#include <math.h>
#include <stdlib.h>
int main ()
{
return abs (0);
}
Error 328: "t.cpp", line 6 # Function 'abs' has not been defined yet; cannot call.
return abs (0);
^^^
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Commented: (STDCXX-244) [HP aCC] no abs() in when
is #included first
Posted by "Martin Sebor (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/STDCXX-244?page=comments#action_12418536 ]
Martin Sebor commented on STDCXX-244:
-------------------------------------
Here's what HP had to say about this when it was first discussed:
****Created By: sebor @ Sep 21, 2000 04:04:11 PM****
Subject: is <stdlib.h> supposed to define abs() in +nostl mode?
Date: Thu, 21 Sep 2000 13:30:04 -0600
From: Martin Sebor <se...@roguewave.com>
Organization: Rogue Wave Software, Inc.
To: HP aCC bug list <ac...@cup.hp.com>
I'm trying to get our C++ libc headers to work and I'm running into a minor snag -- is the error below intended behavior?
$ cat t.cpp
#include <math.h>
#include <stdlib.h>
int main ()
{
return abs (0);
}
$ aCC +nostl -I/usr/include t.cpp
Error 328: "t.cpp", line 6 # Function 'abs' has not been defined yet;
cannot
call.
return abs (0);
^^^
/usr/include/stdlib.h only seems to define abs() if <math.h> hasn't been
#included yet but /usr/include/math.h doesn't define it:
$ cat -n /usr/include/stdlib.h | tail -n +65 | head -7
65 # ifndef __cplusplus
66 extern int abs(int);
67 # else
68 # ifndef _MATH_INCLUDED
69 inline int abs(int d) { return (d>0)?d:-d; }
70 # endif /* _MATH_INCLUDED */
71 # endif
$ cat -n /usr/include/math.h | tail -11
403 #if defined(__cplusplus) && (__cplusplus < 199707)
404 inline int sqr(int x) {return(x*x);}
405 inline double sqr(double x) {return(x*x);}
406 # ifndef _STDLIB_INCLUDED
407 inline int abs(int d) { return (d>0)?d:-d; }
408 # endif /* _STDLIB_INCLUDED */
409 inline double abs(double d) { return fabs(d); }
410 #endif
411
412
413 #endif /* _MATH_INCLUDED */
It seems to me that the guard in <stdlib.h> should take (__cplusplus <
199707) into consideration.
Thanks
Martin
****Modified By: sebor @ Sep 21, 2000 06:57:36 PM****
Subject: Re: is <stdlib.h> supposed to define abs() in +nostl mode?
Date: Thu, 21 Sep 2000 16:02:21 -0700 (PDT)
From: Dennis Handly <dh...@cup.hp.com>
To: acxx-beta@cup.hp.com, sebor@roguewave.com
>is the error below intended behavior?
Yes, you can't just use -I/usr/include. You must use the two other aC++ wrappers around the headers.
In particular it is in /opt/aCC/include/cstdlib and cmath.
403 #if defined(__cplusplus) && (__cplusplus < 199707)
>It seems to me that the guard in <stdlib.h> should take (__cplusplus <
>199707) into consideration.
Martin
You mean __cplusplus >= 199707. It was decided to rip that out of
the system headers and put it in the aC++ specific ones.
****Modified By: sebor @ Sep 21, 2000 06:58:42 PM****
Subject: Re: is <stdlib.h> supposed to define abs() in +nostl mode?
Date: Thu, 21 Sep 2000 17:54:16 -0700 (PDT)
From: Dennis Handly <dh...@cup.hp.com>
To: sebor@roguewave.com
CC: acxx-beta@cup.hp.com
>It's unexpected that if I #include <stdlib.h> alone ::abs() is declared
>but if I #include <math.h> first it disappears. Reversing the order also
>makes a difference which should never be.
Except you can't use the files in /usr/include for C++ without something extra. And unfortunately we are stuck with it.
> [HP aCC] no abs() in <stdlib.h> when <math.h> is #included first
> ----------------------------------------------------------------
>
> Key: STDCXX-244
> URL: http://issues.apache.org/jira/browse/STDCXX-244
> Project: C++ Standard Library
> Type: Bug
> Components: External
> Environment: HP aCC all versions going as far back as 3.00 on HP-UX as old as 11.00
> Reporter: Martin Sebor
>
> $ cat t.cpp && aCC -AA +nostl -I/usr/include t.cpp
> #include <math.h>
> #include <stdlib.h>
> int main ()
> {
> return abs (0);
> }
> Error 328: "t.cpp", line 6 # Function 'abs' has not been defined yet; cannot call.
> return abs (0);
> ^^^
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira