(这不是一个关于编译错误的问题,而是关于Linux终端设置的问题。)
在任何编译错误期间,错误语句不会正确显示代码片段:
In member function â:
error: â was not declared in this scope
是否有设置可以让我的终端正确显示:
In member function `foo()':
error: `endl' was not declared in this scope
更多信息:这在 Emacs 编译模式下正确显示,但即使将该缓冲区保存到临时文件并在命令行上读取它也会产生上述字符。在 Vim 中读取该文件表明奇怪的字符代表多列文本。
答案1
我认为您应该首先使用以下命令检查区域设置:
locale
如果它与文件的字符集不一致,那么您可能会收到错误。
file yoursrcfile
应向您提供必要的信息。
还有一种情况是你的编译器运行在不同的语言环境中。你可以通过设置
export LC_ALL=en_US
适用于您的 bash 会话。这也可以放在编译命令前面。例如
LC_ALL=en_US gcc -o outfile srcfile.c
但这种情况下的效果只会影响后续命令。
另一种情况是,您的源代码可能在 Windows 中被编辑过?无论如何,它可能因某种原因包含一些奇怪的字符。
您应该在 vim 中通过启用显示所有字符来检查它
:set invlist
希望这可以帮助!
答案2
如果环境变量 LANG 是
LANG=en_US.UTF-8
然后在 PuTTy 窗口翻译菜单中,
“接收的数据假定采用哪种字符集”,选择
“UTF-8”。
或者将 LANG 设置为
LANG=en_US
或者
unset LANG