使用 C++11 时出现错误"Error: stray character"

Error "Error: stray character" when using C++11

本文关键字:Error stray character 错误 C++11 使用      更新时间:2023-10-16

当我试图在我的机器上编译以下简单的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(狮子)和GCC 4.7.1。

这是因为在当前目录中包含了一个名为tuple的文件,而不是标准的tuple头文件。可能是因为编译行中有-I.

错误消息中的字符只是文件的第一个字节,不在允许的字符集中,以八进制表示。