zoukankan      html  css  js  c++  java
  • 又见VC6.0奇怪的报错

    又见VC6.0奇怪的报错

     

    首先给出报错的代码:

    Array<LinkedList<Object*>> array;

     

    Objecte是一个类,具体、抽象无关紧要,ArrayLinkedList分别为数组模板类和链表模板类。

     

    那么这行代码的意思就是定义一个数组,数组元素链表,链表中的节点为Object类的指针。

     

    报错为:

    d:\template\adt\chainedhashtable.h(22) : error C2146: syntax error : missing ',' before identifier 'array'

    d:\template\adt\chainedhashtable.h(22) : error C2065: 'array' : undeclared identifier

    d:\template\adt\chainedhashtable.h(22) : error C2143: syntax error : missing '>' before ';'

    d:\template\adt\chainedhashtable.h(22) : error C2208: 'class Array' : no members defined using this type

     

    首先对报错的信息进行分析,发现其都是22行报错,再一想,后面的三个错误都是由于第一个错误所表现出来的对array的定义不能够正确识别所造成的,直觉告诉我,这行代码是不存在语法错误。之后选中error C2146按下F1,得到的信息为This error is usually preceeded by error C2065. The most typical cause of this error is a typographical problem. For example:

    void main(void)

    {

       intt x; //Syntax error: missing semicolon before 'x'

    }

    根据提示,看了下C2065给出的信息,思考了一会儿MSDN给出的几种出错情况,更加确认代码是不存在错误的。由此,将工程关闭,然后用VS2008打开,Ctrl+Shift+B没有报任何错误。果然是VC6.0自身有错误。而且,可以很肯定的是两个模板类之间的嵌套出现了问题,带着尝试的心理,在两个>的前面插入了一个空格,F7,神奇的事发生了,居然的 0 error。输入了两个空格,那么就有这么几种可能了,前面一个导致vc6.0报错,后一个或是两个同时,试了一下,的确是后面的空格的缺失导致的。我的理解是vc6.0将两个连在一起的>当做了位运算符了。

     

    其实,那些VC6.0报错了,然后我们双击报错的信息就能够确定的具体错误的错误相对于这样的错误是不是有点小儿科了?

    原作于2012年9月2日

    www.kingreturns.com
  • 相关阅读:
    软件概要设计
    Jmter进行Rabbitmq测试
    分布式锁
    实用异常
    异常集合
    本地Windows环境安装RabbitMQ Server
    MySQL千万级多表关联SQL语句调优
    mysql数据库多表关联查询的慢SQL优化
    rabbitmq详细配置
    Idea连接服务器docker并部署代码到docker实现一键启动
  • 原文地址:https://www.cnblogs.com/ashboy/p/2867125.html
Copyright © 2011-2022 走看看