The problem is that the definition of isfinite() macro is not consistent
between version of GCC 4.3.3 and 4.4.1.
Simple test program:
include <math.h>
#ifdef isfinite
#error isfinite defined
#else
#error isfinite NOT defined
#endif
int main() { return 0; }
1) Test with GCC 4.4.1 (Ubuntu 9.10 x86-64)
mlos...@dog:~/tmp$ gcc --version
gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1
mlos...@dog:~/tmp$ gcc isfinite.c
isfinite.c:3:2: error: #error isfinite defined
mlos...@dog:~/tmp$
2) Test with GCC 4.3.3 (Ubuntu 9.04 x86-32)
mlos...@vb-ubuntu904:~/tmp$ gcc --version
gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3
mlos...@vb-ubuntu904:~/tmp$ gcc isfinite.c
isfinite.c:5:2: error: #error isfinite NOT defined
In the 2nd case, it seems to be required to use compiler option -std=c99 to
enable the macro:
mlos...@vb-ubuntu904:~/tmp$ gcc -std=c99 isfinite.c
isfinite.c:3:2: error: #error isfinite defined
I think the behaviour of version 4.3.3. is incorrect.
I didn't find any related reports, except the one for C++ use of iostream.h
together with math.h (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14608).
But I am sure it is not related to this report.
--
Summary: isfinite macro defined for 4.4.1 but not for 4.3.3
Product: gcc
Version: 4.3.3
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mateusz at loskot dot net
GCC host triplet: x86_64-*-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42867