我正在使用带有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()是一种方便,所以使用其他方法可能是我的解决方法。我唯一关心的是追踪错误的来源。