>> Unfortunately GCC also defines it, so a "macro redefined" warning is >> emitted when compiling with GCC and including Python.h. Martin> That is not true. GCC does not define that macro, on any Martin> platform. I was shown today that g++ defines that macro internally (I misspoke when I referred to gcc yesterday - I tend to lump them together and forget that C++ is a different language than C), at least 3.3.2 on Solaris/Intel does. Given this small source file: #include "Python.h" int main() { printf("%x\n", PyList_GetItem); return 0; } compilation with gcc (we're using 3.3.2, but I also tried with 3.4.0) produces no warnings, but compilation with g++ it produces this output: g++ -I/opt/lang/python/include/python2.3 -c example.c In file included from /opt/lang/python/include/python2.3/Python.h:8, from example.c:2: /opt/lang/python/include/python2.3/pyconfig.h:862:1: warning: "_XOPEN_SOURCE" redefined <built-in>:73:1: warning: this is the location of the previous definition Sure enough, grepping through the gcc/g++ installation directory doesn't turn up an actual header file containing "#define _XOPEN_SOURCE". I did find a file (.../lib/gcc/i386-pc-solaris2.8/3.4.0/install-tools/ mkheaders.conf) that contains this line: FIXPROTO_DEFINES="-D_XOPEN_SOURCE" Martin> Some system header may define it, though. I believe this is a Martin> bug in the system - the macro *should* be defined in the Martin> application. What system are you referring to, and where does Martin> that define _XOPEN_SOURCE? Is that definition conditional? Does the fact that we're talking g++ and a built-in macro instead of gcc and a macro defined in a .h file suggest a different way to suppress this warning? A little more searching located the standards(5) man page on the system. In part it says: X/Open CAE To build or compile an application that conforms to one of the X/Open CAE specifications, use the following guidelines. Applications need not set the POSIX feature test macros if they require both CAE and POSIX functionality. ... SUSv2 The application must define _XOPEN_SOURCE=500. This suggests that Sun expects the application or its build tools to define _XOPEN_SOURCE, not the compiler or its header files. That suggests a bug in g++. Skip
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4