2

自分のマシンで次の単純なC++11コードをコンパイルしようとすると、奇妙な問題が発生します。

#include <boost/thread/thread.hpp>

g++ foo.cpp -o foo but chokes on g++ -c -std=c++11 foo.cpp -o foo次のエラーで正常にコンパイルされます。

In file included from /usr/local/lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/functional:56:0,
             from /usr/local/lib/gcc/x86_64-apple-darwin11.4.0/4.7.1/../../../../include/c++/4.7.1/memory:81,
             from /usr/local/include/boost/config/no_tr1/memory.hpp:21,
             from /usr/local/include/boost/smart_ptr/shared_ptr.hpp:27,
             from /usr/local/include/boost/shared_ptr.hpp:17,
             from /usr/local/include/boost/thread/pthread/thread_data.hpp:10,
             from /usr/local/include/boost/thread/thread.hpp:17,
             from foo.cpp:1:
./tuple:1:1: error: stray ‘\317’ in program
./tuple:1:1: error: stray ‘\372’ in program
./tuple:1:1: error: stray ‘\355’ in program
./tuple:1:1: error: stray ‘\376’ in program
... Additional lines omitted

私は途方に暮れています。特に、C++11に対して他のプログラムを問題なくコンパイルできたので。何か案は?

OS X v10.7.4(Lion)とGCC4.7.1を実行しています。

4

1 に答える 1

4

これは、標準ヘッダーtupleの代わりに含まれているという名前のファイルが現在のディレクトリにあるためです。tupleおそらく-I.、コンパイル行の一部が原因です。

エラー メッセージ内の浮遊文字は、8 進数で許可された文字セットに含まれていないファイルの最初のバイトです。

于 2013-01-17T15:24:24.697 に答える