开发学院软件开发C++ C++初级之常见编译错误 阅读

C++初级之常见编译错误

 2010-11-02 09:03:36 来源:WEB开发网   
核心提示:1. 没有包含相关的头文件,比如类的头文件,C++初级之常见编译错误,如果仅仅使用类或是结构体来声明变量,那么仅仅需要预声明类和结构体(如class +类名)即可;但是如果使用了类的成员函数或是结构体的成员函数,总之对于标识符无法识别的错误,不应该仅仅局限于错误行,必须包含相关的头文件,对于类的头文件

1. 没有包含相关的头文件,比如类的头文件。如果仅仅使用类或是结构体来声明变量,那么仅仅需要预声明类和结构体(如class +类名)即可;但是如果使用了类的成员函数或是结构体的成员函数,必须包含相关的头文件。对于类的头文件,应该尽可能少的包含其他的头文件。原因在于,头文件是让别人使用的。没有必要让使用者因包含该头文件,而同时又包含其他没有必要的头文件。因此,在头文件中多使用预声明,或是名字空间内的预声明。没有在名字空间中定义的结构体和类,直接使用class struct声明,对于名字空间中定义的结构体和类,使用namespace name_space

{

  class name;

  struct name;

}

当时,预声明的只能是class/struct,对于使用typedef定义的名字是无法预声明的,当然这是完全可以避免使用的,自己重新typedef

2. 拼写错误:大小写出错、字母顺序颠倒等。这是一个低级错误,当出头与头文件无关时,应优先检查是否拼写错误或是大小写错误。

3. Editer乱码现象。如果时使用其他的编辑器,应注意这个问题。当错误出现在在第一个字符时,只能copy整个可见的文件。这样的错误,编译器会提示:符号不能识别。

4. (27日)类型强制转换。C++有严格的类型检查,在函数的参数传递过程中,一定要保证参数的类型一致(这里的一致:不仅包括参数的类型,也要求const一致)。一般,如果要使用变量的类型强制转换,尽量把强制转换的结果先存在与另一个变量中,在把新变量作为参数传给函数。也就是类型强制转换尽量不要放在传递参数的时候!一般类型强制转换用于指针之间比较多,尤其是基类和派生类指针之间。

5. 对象传递。C++允许用户将派生类对象传递给基类类型的形参;但是反之则不行:基类对象不能传递给派生类的形参!注意这指的是类对象间的传递。对于指针并没用这样的限制。所有的指针仅仅是类型不一样,本质上都是一个指向内存地址的整型数。

6. (0803)多分号少分号。在类定义、结构体定义的时候,分号是必不可少的,内部的语句和都需要。上面文检查就可以找到。在if语句后面一定不要有分号,否则后面的语句就会总被执行。这样的错误只要在执行时才会被发现。函数体{}不需要分号,只要类,结构体等的定义的{}后面才需要加分号。

7. 使用他人的头文件,仅仅需要修改makefile文件中的头文件路径,使能够找到就可以了。

8. 使用他人的库,也只需要修改makfile的动态库路径。

9. 名字空间的使用:如想使用名字空间内的结构体或是类,有两种使用办法:

1) typedef name_space::classname newname;(必须包含头文件)

2) namespace name_space

{

class name;

struct name;

}

10. 不要在h文件里面使用名字空间using),这样会造成名字污染!!!在cpp文件中使用关系不大。

11. 如果定义同一个常量,使用相同的名字,而一个使用enum(unsigned int), 一个使用define(int),编译将会有冲突,编译无法过去!

12. 如果包含Ice的头文件,目前只能Ice的头文件放在.cppinclude的首项,不然会出现编译错误。

13. 如果list的只读的,那么也必须使用只读的迭代器来访问。

14. 逗号和点号(.)的错误,拼写错误!这一般编译器会提示:某个新标识符没有定义。

15. 标识符无法识别的情况:没有预声明class,struct等;在.h文件中成员定义的后面没有加分号(;);拼写错误;点号误写成逗号;在.cpp文件中,没有包含使用到的.h文件(由于.cpp文件他人不用,可以使用名字空间,也不可包含.h文件);在.cpp文件中,成员函数的前面忘记使用类名(::),或是类名写错了;等等。总之对于标识符无法识别的错误,不应该仅仅局限于错误行,应该多向前查找几行。

 

C++初级之常见运行错误

http://tech.cncms.com/develop/cjj/111885.html

C++初级之常用的调试技巧

http://tech.cncms.com/develop/cjj/111886.html

C++初级之基本知识

http://tech.cncms.com/develop/cjj/111883.html

Tags:C++初级 编译错误

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
更多精彩
    赞助商链接

    热点阅读
      焦点图片
        最新推荐
          精彩阅读