VC开发常见错误之编程

来源:互联网 发布:java中反射的概念 编辑:程序博客网 时间:2024/05/29 18:22

(31)error C2001: newline in constant 在常量中出现了换行

错误可能原因:1、字符串常量、字符常量中有换行。2、此句代码中,某个字符串常量的尾部漏掉了双引号。3、此句代码中,某个字符创常量中出现了双引号字符“"”,但是没有使用转义符“\"”。4、此句代码中,某个字符常量的尾部漏掉了单引号。5、在某句代码的尾部,或语句的中间误输入了一个单引号或双引号。

(32)error C2015: too many characters in constant字符常量中的字符太多


错误原因:单引号表示字符型常量。一般的,单引号中必须有,也只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。 另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误。注意:如果单引号中的字符数是2-4个,编译不报错,不过会截断常量值。

(33)error C2137: empty character constant空字符常量


错误原因:连用了两个单引号,而中间没有任何字符。两个单引号之间不加任何内容是不允许的。

(34)string需要usingnamespace std;否则会报你认为的莫名其妙的问题


(35)释放动态数组时,记得空方括号,否则会造成内存泄露等错误。

int *pianew int[10];

delete [] pia;

带[]告诉编译器该指针指向的是自由存储区中的数组,而不是单个对象。

(36)有些人曾遇到if分支语句不执行的错误,例如:判断一个int型变量是否在2和10之间,以下写法是错误的

    if (2 < i <10){   

    }else{

    }

关系操作符(<、<=、>、<=)具有左结合特性。事实上,由于关系操作符返回bool 类型的结果,很少使用其左结合特性。上式10大于1值为true和i值没有关系。这是因为第二个小于操作符的左操作数是第一个小于操作符的结果:true 或 false。也就是,该条件将10与整数0或1做比较。为了实现我们想要的条件检验,应重写上述表达式如下:if (2 < i && i < 10) { /* ... */ }

结论:不应该串接使用关系操作符

(37)如果某个数字常量以“0”开头(单纯的数字0除外),那么编译器会认为这是一个8进制数字

 

(38)error C2065: “CString”: 未声明的标识符

包含#include <afx.h>头文件,且右键选择工程->属性->配置属性->常规->MFC的使用改为:在静态库中使用 MFC,否则编译出现下面的错误信息。

c:\program files\microsoft visual studio9.0\vc\atlmfc\include\afx.h(24) : fatal error C1189: #error :  Building MFC application with /MD[d] (CRT dllversion) requires MFC shared dll version. Please #define _AFXDLL or do not use/MD[d]

(39)为了兼容性最好将for语句头的名字定义在for语句外面,否则会造成在有的情况下编译通不过。

即:for(int i = 0;i <10; ++i)最好写成

int i =0;

for(i =0;i < 10; ++i)

因为在标准化之前的C++中,定义在for语句头的名字在for循环外是可以访问的。而标准化之后是不可以的。

(40)fatal error C1083: 无法打开包括文件:“iostream.h”: No such file or directory

改为#include <iostream>


0 0
原创粉丝点击