Nasos Dousis <ndou...@gmail.com> added the comment: I'm upgrading from Python 2.6.5 to 2.7.1, and I'm getting the error below when compiling my code using Boost 1.45 and gcc 4.2.1 in OSX 10.6.6. The following thread describes similar symptoms related to the ordering of header files and macro definitions: http://code.google.com/p/unladen-swallow/issues/detail?id=87#c13
The suggested patch to pyport.h (http://codereview.appspot.com/179049/patch/1/2) does not fix my problem. However, prepending #include "Python.h" to each source file (e.g., bend.cc below) does fix the problem. Is there a simple way to fix this without adding Python.h to every source file in my codebase? I've installed Boost and Python from source to non-standard directories, Boost 1.45 by: cd $(BOOST); ./bootstrap.sh --prefix=$(CURDIR)/$(BOOST) --with-python-root=$(CURDIR)/$(PYTHON_DIR) --with-python-version=2.7 --with-libraries=mpi and Python 2.7 by: cd $(PYTHON_SRCDIR) ; ./configure --enable-shared --prefix=$(CURDIR)/$(PYTHON_DIR) cd $(PYTHON_SRCDIR) ; make -j $(NUMPROC) && make install Any guidance will be greatly appreciated. Kind regards, Nasos =============== ... darwin.compile.c++ bin/darwin-4.2.1/release/threading-multi/bend.o In file included from /usr/include/c++/4.2.1/ios:47, from /usr/include/c++/4.2.1/ostream:45, from /usr/include/c++/4.2.1/iterator:70, from boost/boost/next_prior.hpp:15, from boost/boost/utility.hpp:17, from boost/boost/python/instance_holder.hpp:10, from boost/boost/python/object/pointer_holder.hpp:14, from boost/boost/python/to_python_indirect.hpp:10, from boost/boost/python/converter/arg_to_python.hpp:10, from boost/boost/python/call.hpp:15, from boost/boost/python/object_core.hpp:14, from boost/boost/python/args.hpp:25, from boost/boost/python.hpp:11, from bend.hh:6, from bend.cc:1: /usr/include/c++/4.2.1/bits/localefwd.h:58:34: error: macro "isspace" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/localefwd.h:70:34: error: macro "isupper" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/localefwd.h:74:34: error: macro "islower" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/localefwd.h:78:34: error: macro "isalpha" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/localefwd.h:94:34: error: macro "isalnum" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/localefwd.h:102:34: error: macro "toupper" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/localefwd.h:106:34: error: macro "tolower" passed 2 arguments, but takes just 1 In file included from /usr/include/c++/4.2.1/bits/basic_ios.h:44, from /usr/include/c++/4.2.1/ios:50, from /usr/include/c++/4.2.1/ostream:45, from /usr/include/c++/4.2.1/iterator:70, from boost/boost/next_prior.hpp:15, from boost/boost/utility.hpp:17, from boost/boost/python/instance_holder.hpp:10, from boost/boost/python/object/pointer_holder.hpp:14, from boost/boost/python/to_python_indirect.hpp:10, from boost/boost/python/converter/arg_to_python.hpp:10, from boost/boost/python/call.hpp:15, from boost/boost/python/object_core.hpp:14, from boost/boost/python/args.hpp:25, from boost/boost/python.hpp:11, from bend.hh:6, from bend.cc:1: /usr/include/c++/4.2.1/bits/locale_facets.h:242:53: error: macro "toupper" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/locale_facets.h:271:53: error: macro "tolower" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/locale_facets.h:814:53: error: macro "toupper" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/locale_facets.h:847:53: error: macro "tolower" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/locale_facets.h:4611:44: error: macro "isspace" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/locale_facets.h:4629:44: error: macro "isupper" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/locale_facets.h:4635:44: error: macro "islower" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/locale_facets.h:4641:44: error: macro "isalpha" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/locale_facets.h:4665:44: error: macro "isalnum" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/locale_facets.h:4677:44: error: macro "toupper" passed 2 arguments, but takes just 1 /usr/include/c++/4.2.1/bits/locale_facets.h:4683:44: error: macro "tolower" passed 2 arguments, but takes just 1 In file included from /usr/include/c++/4.2.1/ios:47, from /usr/include/c++/4.2.1/ostream:45, from /usr/include/c++/4.2.1/iterator:70, from boost/boost/next_prior.hpp:15, from boost/boost/utility.hpp:17, from boost/boost/python/instance_holder.hpp:10, from boost/boost/python/object/pointer_holder.hpp:14, from boost/boost/python/to_python_indirect.hpp:10, from boost/boost/python/converter/arg_to_python.hpp:10, from boost/boost/python/call.hpp:15, from boost/boost/python/object_core.hpp:14, from boost/boost/python/args.hpp:25, from boost/boost/python.hpp:11, from bend.hh:6, from bend.cc:1: /usr/include/c++/4.2.1/bits/localefwd.h:58: error: ‘std::isspace’ declared as an ‘inline’ variable /usr/include/c++/4.2.1/bits/localefwd.h:58: error: template declaration of ‘bool std::isspace’ /usr/include/c++/4.2.1/bits/localefwd.h:70: error: ‘std::isupper’ declared as an ‘inline’ variable /usr/include/c++/4.2.1/bits/localefwd.h:70: error: template declaration of ‘bool std::isupper’ /usr/include/c++/4.2.1/bits/localefwd.h:74: error: ‘std::islower’ declared as an ‘inline’ variable /usr/include/c++/4.2.1/bits/localefwd.h:74: error: template declaration of ‘bool std::islower’ /usr/include/c++/4.2.1/bits/localefwd.h:78: error: ‘std::isalpha’ declared as an ‘inline’ variable /usr/include/c++/4.2.1/bits/localefwd.h:78: error: template declaration of ‘bool std::isalpha’ /usr/include/c++/4.2.1/bits/localefwd.h:94: error: ‘std::isalnum’ declared as an ‘inline’ variable /usr/include/c++/4.2.1/bits/localefwd.h:94: error: template declaration of ‘bool std::isalnum’ /usr/include/c++/4.2.1/bits/localefwd.h:102: error: ‘std::toupper’ declared as an ‘inline’ variable /usr/include/c++/4.2.1/bits/localefwd.h:102: error: template declaration of ‘_CharT std::toupper’ /usr/include/c++/4.2.1/bits/localefwd.h:106: error: ‘std::tolower’ declared as an ‘inline’ variable /usr/include/c++/4.2.1/bits/localefwd.h:106: error: template declaration of ‘_CharT std::tolower’ In file included from /usr/include/c++/4.2.1/bits/basic_ios.h:44, from /usr/include/c++/4.2.1/ios:50, from /usr/include/c++/4.2.1/ostream:45, from /usr/include/c++/4.2.1/iterator:70, from boost/boost/next_prior.hpp:15, from boost/boost/utility.hpp:17, from boost/boost/python/instance_holder.hpp:10, from boost/boost/python/object/pointer_holder.hpp:14, from boost/boost/python/to_python_indirect.hpp:10, from boost/boost/python/converter/arg_to_python.hpp:10, from boost/boost/python/call.hpp:15, from boost/boost/python/object_core.hpp:14, from boost/boost/python/args.hpp:25, from boost/boost/python.hpp:11, from bend.hh:6, from bend.cc:1: /usr/include/c++/4.2.1/bits/locale_facets.h:227: error: ‘btowc’ is not a type /usr/include/c++/4.2.1/bits/locale_facets.h:242: error: expected ‘;’ before ‘const’ /usr/include/c++/4.2.1/bits/locale_facets.h:255: error: expected `;' before ‘char_type’ /usr/include/c++/4.2.1/bits/locale_facets.h:256: error: ‘btowc’ is not a type /usr/include/c++/4.2.1/bits/locale_facets.h:271: error: expected ‘;’ before ‘const’ /usr/include/c++/4.2.1/bits/locale_facets.h:287: error: expected `;' before ‘char_type’ /usr/include/c++/4.2.1/bits/locale_facets.h: In member function ‘_CharT std::__ctype_abstract_base<_CharT>::towupper(int (*)(_CharT)) const’: /usr/include/c++/4.2.1/bits/locale_facets.h:228: error: ‘__c’ was not declared in this scope /usr/include/c++/4.2.1/bits/locale_facets.h: In member function ‘_CharT std::__ctype_abstract_base<_CharT>::towlower(int (*)(_CharT)) const’: /usr/include/c++/4.2.1/bits/locale_facets.h:257: error: ‘__c’ was not declared in this scope /usr/include/c++/4.2.1/bits/locale_facets.h: At global scope: /usr/include/c++/4.2.1/bits/locale_facets.h:797: error: ‘btowc’ is not a type /usr/include/c++/4.2.1/bits/locale_facets.h:814: error: expected ‘;’ before ‘const’ /usr/include/c++/4.2.1/bits/locale_facets.h:829: error: expected `;' before ‘char_type’ /usr/include/c++/4.2.1/bits/locale_facets.h:830: error: ‘btowc’ is not a type /usr/include/c++/4.2.1/bits/locale_facets.h:847: error: expected ‘;’ before ‘const’ /usr/include/c++/4.2.1/bits/locale_facets.h:866: error: expected `;' before ‘char_type’ /usr/include/c++/4.2.1/bits/locale_facets.h: In member function ‘char std::ctype<char>::towupper(int (*)(char)) const’: /usr/include/c++/4.2.1/bits/locale_facets.h:798: error: ‘__c’ was not declared in this scope /usr/include/c++/4.2.1/bits/locale_facets.h: In member function ‘char std::ctype<char>::towlower(int (*)(char)) const’: /usr/include/c++/4.2.1/bits/locale_facets.h:831: error: ‘__c’ was not declared in this scope In file included from /usr/include/c++/4.2.1/bits/basic_ios.h:44, from /usr/include/c++/4.2.1/ios:50, from /usr/include/c++/4.2.1/ostream:45, from /usr/include/c++/4.2.1/iterator:70, from boost/boost/next_prior.hpp:15, from boost/boost/utility.hpp:17, from boost/boost/python/instance_holder.hpp:10, from boost/boost/python/object/pointer_holder.hpp:14, from boost/boost/python/to_python_indirect.hpp:10, from boost/boost/python/converter/arg_to_python.hpp:10, from boost/boost/python/call.hpp:15, from boost/boost/python/object_core.hpp:14, from boost/boost/python/args.hpp:25, from boost/boost/python.hpp:11, from bend.hh:6, from bend.cc:1: /usr/include/c++/4.2.1/bits/locale_facets.h: At global scope: /usr/include/c++/4.2.1/bits/locale_facets.h:4611: error: function definition does not declare parameters /usr/include/c++/4.2.1/bits/locale_facets.h:4629: error: function definition does not declare parameters /usr/include/c++/4.2.1/bits/locale_facets.h:4635: error: function definition does not declare parameters /usr/include/c++/4.2.1/bits/locale_facets.h:4641: error: function definition does not declare parameters /usr/include/c++/4.2.1/bits/locale_facets.h:4665: error: function definition does not declare parameters /usr/include/c++/4.2.1/bits/locale_facets.h:4677: error: function definition does not declare parameters /usr/include/c++/4.2.1/bits/locale_facets.h:4683: error: function definition does not declare parameters "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -g -dynamic -no-cpp-precomp -gdwarf-2 -fPIC -Wstrict-aliasing=2 -ffast-math -fno-strict-aliasing -DBOOST_PYTHON_MAX_ARITY=30 -D_REENTRANT -I"boost" -I"python/include/python2.7" -c -o "bin/darwin-4.2.1/release/threading-multi/Dbend.o" "bend.cc" ...failed darwin.compile.c++ bin/darwin-4.2.1/release/threading-multi/bend.o... ---------- nosy: +ndousis _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue10910> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com