gcc编译报错:程序中有游离的‘357’‘273’‘277’等

jackxiang 2012-2-18 21:27 | |
今天在网上找到一个小程序,一编译出现一大堆的
错误: 程序中有游离的 ......
开始觉得可能我从网页上直接复制的代码中有别的字符。于是把中文的全角空格全部替换了。
这次好多了,少了一些,不过还有很多,调试信息说是XX行有游离的。。。哪怕我把他全部删除,手动输入也不行。。。

baidu了一下找到一个高手的一个解决方法:

od -c das-server.c > log.txt

终于找到了,其实不是那一行,而是别的行有 302 240 等。
删除了,终于好了,小记一下。

http://blog.csdn.net/wuff1988/article/details/7067373






1. 程序(*.c,*.h)中使用了中文的标点符号(全角),比如;,},+。
改成英文的标点半角符号就行了。
甚至有时候空格也会出现类似错误,删掉该空格 重新输入。
vim里面做类似替换还是很容易的。
如何看到报错的符号?
od -c hello.c > log.txt
在log中就能看到符号了

2. 如果替换成了英文标点还出错的话,还报此错误,那么就是文件存贮格式的问题了。
一般在windows下的文件都存成ansi格式,为了在linux下能通用,建议保存成UTF-8不带BOM
编码格式,因为目前gcc和g++不支持UTF-8带BOM编码格式。

用g++编译的时候碰到UTF-8 BOM错误怎么办?
$ g++ -I../../include unit_test.cpp -o unit_test
unit_test.cpp:1: 错误: 程序中有游离的’\357′
unit_test.cpp:1: 错误: 程序中有游离的’\273′
unit_test.cpp:1: 错误: 程序中有游离的’\277′
In file included from unit_test.cpp:63:


或在英文系统下:
$ g++ -I../../include unit_test.cpp -o unit_test
unit_test.cpp:1: error: stray ‘\357′ in program
unit_test.cpp:1: error: stray ‘\273′ in program
unit_test.cpp:1: error: stray ‘\277′ in program
In file included from unit_test.cpp:63:


如何判断文件是否是使用UTF-8 BOM存储的?

执行下面的命令:
$ cat cpp/src/unit_test/unit_test.cpp |hd -n 10
00000000 ef bb bf 2f 2a 2a 2a 2a 2a 2a |…/******|
0000000a



linux下c编程有时会遇到 :

wanglitaotest.c:4: 错误:程序中有游离的 ‘\357’
wanglitaotest.c:4: 错误:程序中有游离的 ‘\274’
wanglitaotest.c:4: 错误:程序中有游离的 ‘\214’
wanglitaotest.c:4: 错误:expected ‘;’, ‘,’ or ‘)’ before ‘char’
wanglitaotest.c:9: 错误:程序中有游离的 ‘\357’
wanglitaotest.c:9: 错误:程序中有游离的 ‘\274’
wanglitaotest.c:9: 错误:程序中有游离的 ‘\214’
wanglitaotest.c:17: 错误:程序中有游离的 ‘\357’
wanglitaotest.c:17: 错误:程序中有游离的 ‘\274’
wanglitaotest.c:17: 错误:程序中有游离的 ‘\214’
wanglitaotest.c:17: 错误:程序中有游离的 ‘\357’
wanglitaotest.c:17: 错误:程序中有游离的 ‘\274’
wanglitaotest.c:17: 错误:程序中有游离的 ‘\214’

解决办法
1.程序中输入的字符: , ; " ' / 等符号,有可能是使用的中文输入发输入的
2.程序中有使用全角拼音的现象
把程序完全用 英语输入,半角输入运行正常


错误提示 : a.c:6: 错误:程序中有游离的 ‘\200’
a.c:6: 错误:程序中有游离的 ‘\200’
a.c:8: 错误:程序中有游离的 ‘\343’
a.c:8: 错误:程序中有游离的 ‘\200’
a.c:8: 错误:程序中有游离的 ‘\200’

原因
这个错误一般是由于你程序(a.c)中使用了中文的标点符号,比如;,},+。
改成英文的就行了。
甚至有时候空格也会出现类似错误,删掉该空格 重新输入。
如果找不出来,解决的办法就是关闭中文输入法然后把有错这一行重新敲一遍。
来自:http://blog.163.com/lgs_002/blog/static/2873604320119109353553/
来自:
http://tiaozhanshu.com/computer/software/gcc%E7%BC%96%E8%AF%91%E6%8A%A5%E9%94%99%EF%BC%9A%E7%A8%8B%E5%BA%8F%E4%B8%AD%E6%9C%89%E6%B8%B8%E7%A6%BB%E7%9A%84357273277%E7%AD%89.html
http://apps.hi.baidu.com/share/detail/47329734

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/4999/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2013-8-18 19:31
评论列表
2012-2-19 12:07 | 超级赛亚人 Email Homepage
不顶联合国要来调查。.................................。
2012-2-19 02:01 | yuanmai94241 Email Homepage
想想那些就可气总有一天会消失的
分页: 1/1 第一页 1 最后页
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]