程序中的杂散“\303”和杂散“\215”——为啥?
Posted
技术标签:
【中文标题】程序中的杂散“\\303”和杂散“\\215”——为啥?【英文标题】:Stray "\303" and stray "\215" in program -- why?程序中的杂散“\303”和杂散“\215”——为什么? 【发布时间】:2014-03-13 16:05:52 【问题描述】:在我找到 here 的程序中,我收到了错误消息,而不是杂散的“\302”:
algo.c:118: error: stray ‘\303’ in program
algo.c:118: error: stray ‘\215’ in program
我看不懂,这是什么?
编辑为了将来的参考,流浪的 '\XXX' 意味着编译器无法理解的字符。修复的方法是找到'\XXX'字符(现在我发现它并不总是这个unicode,它不可能是错误的定义,例如'##define'中的'##'),然后删除或纠正它。祝你好运!
【问题讨论】:
这是从 Windows 复制到 Linux 的吗?dos2unix
这个命令呢,你试过了吗?
***.com/a/6526863/2591612
一个原因可能是您的变量名中有非 ASCII 字符。 Visual Studio 允许这些,但不允许 GCC。
如果您使用的是 Linux/Unix/Mac OSX,请尝试输入“cat -vet algo.c”来查看字符。
您可以查看文件algo.c
中的第118 行来查找问题。也许也发布它以使您的问题易于理解?
【参考方案1】:
这些是:
00C3 LATIN CAPITAL LETTER A WITH TILDE
: 0041 0303
U+00C3, character Ã, decimal 195, hex 0xC3, octal \303, binary 11000011
UTF-8: 0xc3 0x83
008D <control>
= REVERSE LINE FEED
U+008D, character , decimal 141, hex 0x8D, octal \215, binary 10001101
UTF-8: 0xc2 0x8d
我猜那些不是故意的。有时,如果您在窗口完全加载并完成其stty
操作之前开始输入,则在终端中进行编辑会产生这种情况。我经常在emacs
看到这种事情。
解决方案:转到相应的行并删除字符。 cat -te
或 less
有助于识别哪些字符有问题。
【讨论】:
最简单的方法通常是编辑文件,按照如下所示重新键入有问题的行,然后删除其中包含(不可见)垃圾的原始文件。 这是一个在vim中没有显示但出现在sublime text 2中的字符。我想我可能是错误地输入了这个并忘记了它,因为代码的长度。 但我的解决方法只是删除拉丁大写字母。我没有看到反向换行字符。那是因为它只是自动带有一个拉丁字符吗? 在 UTF-8 中,序列 0xC3 0x8D 表示单个字符 U+00CD LATIN CAPITAL LETTER I WITH ACUTE,这可能就是您所看到的。【参考方案2】:作为附加答案,当我想输入需要Alt Gr
组合的字符时,我经常会遇到这种情况。通常我的手指滑了,这会导致隐藏的垃圾字符。
如前所述,更好的解决方案是重写斑点线。
【讨论】:
【参考方案3】:在代码中使用非 ascii 字符可能会导致此错误。
我在 enum
中使用 öäü... 遇到了 sam 问题
【讨论】:
以上是关于程序中的杂散“\303”和杂散“\215”——为啥?的主要内容,如果未能解决你的问题,请参考以下文章