编译错误:程序中出现了杂散的 '\302',等等。

39

我在编译以下漏洞代码时遇到了问题:

http://downloads.securityfocus.com/vulnerabilities/exploits/59846-1.c

我正在使用"gcc file.c""gcc -O2 file.c",但两者都导致以下错误:
sorbolinux-exec.c: In function ‘sc’:
sorbolinux-exec.c:76: error: stray ‘\302’ in program
sorbolinux-exec.c:76: error: stray ‘\244’ in program
sorbolinux-exec.c:76: error: ‘t’ undeclared (first use in this function)
sorbolinux-exec.c:76: error: (Each undeclared identifier is reported only  once
sorbolinux-exec.c:76: error: for each function it appears in.)

我尝试在Kali LinuxUbuntu 10.04(Lucid Lynx)上编译它们,结果相同。

听起来像是你的文件包含了在标识符中不合法的“国家”字符之类的内容。但你真的应该在问题中包含出现错误的那些行。 - Hot Licks
错误信息说得很清楚。 - this
3
"\302\244" 是 UTF-8 序列 0xC2 0xA4 的八进制表示,代表货币符号:"¤"。 - Codo
2
这个问题是关于从网页、PDF文档或通过聊天(如Skype聊天或Facebook Messenger)复制粘贴代码时经常遇到的杂散字符问题的规范问题。因此,它值得得到全面的回答。目前,只有twitchdotcom slash KANJICODER的答案符合要求。 - Peter Mortensen
一个常见的问题是偏离了 ‘\342’ ‘\200’ ‘\213’(八进制数 - UTF-8 字节序列 0xE2 0x80 0x8B,Unicode 代码点 U+200B(零宽空格))。在 Geany 中使用正则表达式模式中的搜索 / 替换 \x{200B} 可以解决这个问题。 - Peter Mortensen
显示剩余19条评论
12个回答

0

0

在我的情况下,当我将代码以文本格式复制并粘贴到我的编辑器(gedit)中时,出现了这个错误。

该代码位于一个文本文档(.odt)中。我将其复制并粘贴到gedit中。

如果您也是这样做的话,您需要手动重写代码。


重写代码是不必要的。例如,在Notepad++中,您可以搜索和替换Unicode代码点。例如,使用文件的二进制/十六进制视图识别出的\x{00A0},这是通过Skype Chat复制时遇到的问题。 - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接