• 使用VC6.0编译C++代码的时候报错:fatal error C1071: unexpected end of file found in comment(Mark ZZ) 2013-12-24 13:12 737人阅读 评论(0) 收藏


    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 b=%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 b=%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

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    HeidiSQL
    PostgreSQL
    MariaDB
    NLog
    0 vs null
    忘带手机的那么一天
    江城子·己亥年戊辰月丁丑日话凄凉
    单体 VS 微服务
    java面向对象(四)之重写、重载
    java面向对象(三)之抽象类,接口,向上转型
  • 原文地址:https://www.cnblogs.com/pjdssswe/p/4696117.html
Copyright © 2020-2023  润新知