fatal error C1071: unexpected end of file found in comment(Mark ZZ)

今天在一论坛上看到一人发帖:

『最近遇到一个奇怪的问题,代码中的中文注释能使程序出错!!!
试看如下的代码:
int main() {
int a = 0;
int b = 0;

/**停车来源字*/ ——————应改为“/*(空格,也可不空)*停车来源字(空格)*/ ”
a = 10;
b = 20;

/**注释结束*/——————应改为“/*(空格,也可不空)*注释结束(空格)*/”
printf("a=%d\tb=%d", a, b);

return 0;
}
运行的结果居然是:a=0 b=0
分析后发现中间的赋值语句被当成了注释,忽略掉了。
请问各位大虾,是否遇到此现象?怎么解释?怎么避免此现象?
编译环境是VC++6.0。』

其实我遇到的倒不是,而是fatal error C1071: unexpected end of file found in comment,

查了下:注释里有中文等字符的时候,   在单行注释最后加个空格,   多行注释   */   前加一个空格   ...
当然最好的是注释都用英文。

因为某些特殊中文字符在某些字符集下会被处理成特殊的转义序列,   并且GBK字符集中尾字符还包含了C标准的转义字符   0x5C   '\\ '   ,   在这些情况下,   转义字符后跟   */   或者是单行注释的换行都会出错,   特别是在非中文的系统下编译的时候这种情况特别严重。修改如上。

 

运行的结果居然是:a=0 b=0—————— 可能空格的情况是
/**停车来源字*/
a = 10;
b = 20;

/**注释结束(空格)*/——————这里空格了,/**停。。。。。束(空格)*/之间的不执行。
printf("a=%d\tb=%d", a, b);

如果是/* */,不会出现诸于此类问题

http://topic.csdn.net/u/20100325/22/46c67761-38c8-4505-90bd-7c118791a298.html

http://topic.csdn.net/u/20070627/21/82ab7370-5a98-4e4d-8ed4-da6ad0996b84.html?310753027

posted on   寂寞的肥肉  阅读(8627)  评论(1编辑  收藏  举报

编辑推荐:
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(一):从.NET IoT入
· .NET 开发的分流抢票软件,不做广告、不收集隐私
· ASP.NET Core - 日志记录系统(二)
· 实现windows下简单的自动化窗口管理
· 一个超经典 WinForm,WPF 卡死问题的终极反思

导航

< 2010年4月 >
28 29 30 31 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示