<iomanip>生成编译器错误stray'\ #UTF'

时间:2017-05-12 08:18:10

标签: c++ gcc g++ codeblocks

我正在使用带有cygwin的代码:: blocks(gcc 5.4.0)。

我的代码编译并运行正常,直到我

#include <iomanip> (trying to get access to cout << setprecision(int) ).

即使没有调用setprecision,iomanip也会生成这些错误。

一个简短的样本(它吐出50个错误,全部类似)

/usr/bin/locale:1:1: error: stray '\220' in program
 MZ       ÿÿ  ¸       @                                   €   º ´ Í!¸LÍ!This program cannot be run in DOS mode.
 ^
/usr/bin/locale:1:1: error: stray '\3' in program
/usr/bin/locale:1:1: error: stray '\4' in program
/usr/bin/locale:1:1: error: stray '\377' in program
/usr/bin/locale:1:1: error: stray '\377' in program
/usr/bin/locale:1:1: error: stray '\270' in program
/usr/bin/locale:1:25: error: stray '@' in program

从我所做的搜索中,很明显编译器无法解释某种UTF-8字符。我追踪到iomanip 认为它是

#include <locale>

来自同一目录。但是我已经在一个新文件中手动重新输入了代码(它很简短)并且没有更改,所以我很茫然,因为错误链总是从语言环境1(在strays上相同的数字)开始,它从我的第6行#include iomanip - &gt; iomanip第43行#include locale。

从更多的搜索中,我遇到了g ++ -E的麻烦。 编译该代码工作正常,但这是一个完全令人讨厌的临时步骤。 我还担心这个错误可能会包含其他标题来访问受污染的文件,不一定只是iomanip,所以我希望能够定期跟踪事情。 (除非有人想责怪镜子我曾经安装cygwin?)

请注意 我知道setprecision()是一种方便,所以使用其他方法可能是我的解决方法。我唯一关心的是追踪错误的来源。

0 个答案:

没有答案