王牌8 扫雷英雄榜——Visual C++常见错误及解决方案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
错误分析 无法打开编译器中间文件,没有这样的文件或目录。 编译器无法创建在编译过程中使用的中间文件,因为 TMP 环境变量设置为一个无效的
目录或路径。 解决方案 使用 SET 命令来更改 TMP 环境变量,使其指向一个有效的目录。
5. 致命错误 C1053
错误信息 '<identifier>' : function too large
错误分析 '<identifier>'功能过于庞大。 函数太大无法进行编译。
解决方案
2
扫雷英雄榜——Visual C++常见错误及解决方案 王牌8
您可以尝试下优化编译,或者将原函数分成两个或多个函数。 请注意,内联函数调用例程可能使函数变得很大。
6. 致命错误 C1055
错误信息 compiler limit : out of keys
错误信息
'identifier' : is not a member of 'identifier' 错误分析
标识符是不是成员标识符。 一个结构或联合非成员被错误地使用。
举例
struct S {
int mem0; } *pS; void main() {
pS->mem1 = 0; pS->mem0 = 0; }
j = i(); p(); }
// error, i is not a function // error, p doesn't point to a function
18. 编译器错误 C2073
7
Visual C++从入门到精通
错误信息
'identifier' : partially initialized array requires a default constructor 错误分析
22. 编译器错误 C2129
错误信息 static function 'function' declared but not defined 9
Visual C++从入门到精通
错误分析 使用了一个静态函数,但是从来没有定义。
解决方案 函数定义为静态的,必须在文件的范围界定。如果函数在另一个文件中定义,它应该被
参数列表的名称非法。 指定的标识符导致语法错误。
举例
void func( int i, j ) // error, no type specified for j { }
20. 编译器错误 C2083 8
扫雷英雄榜——Visual C++常见错误及解决方案 王牌8
错误信息
struct/union comparison illegal 错误分析
录框,选择包含文件并指定包含文件的路径。 如果您使用的是命令行编译器,运行的 vcvars32.bat 批处理文件设置 INCLUDE 环境变
量。
4. 致命错误 C1042
错误信息 cannot open compiler intermediate file - no such file or directory
编译器错误c2415错误信息improperoperandtype错误分析操作码不支持这种类型的操作解决方案可能其他的操作类型被一个新的处理器所支持可以编译时候添加g1或者g2选择项来解决这个问题但是仅仅包含更新的处理器的机器能执行扩展的指令系统
扫雷英雄榜——Visual C++常见错误及解决方案 王牌8
举例 #undef _WIN32
#if !defined(_WIN32) #error _WIN32 must be defined //error #endif
int main() {
return 0; }
10. 致命错误 C1852
错误信息 'filename' is not a valid precompiled header file
int i = 081; // error, 8 is not a legal digit int i = 071; // OK
16. 编译器错误 C2060
错误信息
syntax error : end of file found 错误分析
语法错误:文件结束处缺少项。
举例
省略分号(;)
int *p // error 漏掉一个右大括号())
举例 struct A* pA; 5
Visual C++从入门到精通
struct B { int i; }; B* pB; void main() {
pA++; // error, size of A not known pB++; // OK, B has been declared }
14. 编译器错误 C2039
解决方案 从基类或结构继承一个函数不能被重新定义。如果函数在派生类中重新定义,它应该被
宣布为在基类中的虚拟。
13. 编译器错误 C2036
错误信息 'class-key' : unknown size
错误分析 未知大小。 指定未声明的标识符地址已经被使用。 一个未申报对象的大小不能使用。
// error, mem1 is not a member // OK
15. 编译器错误 C2041
错误信息 illegal digit 'character' for base 'number'
错误分析 数字的进制使用错误。 指定的字符的数字没有按照指定的进制使用。
举例
6
扫雷英雄榜——Visual C++常见错误及解决方案 王牌8
该程序有太多的符号或者复杂的表达式。 解决方案: 将文件文件分为几个较小的源文件。 将复杂的表达式成较小的子表达式。 删除在系统中消耗大量的内存运行的其他程序或驱动程序。
2. 致命错误 C1023
错误信息 cannot open source file 'filename'
错误分析 无法打开源文件。 给定的文件不存在,或者没有被发现,从而导致无法打开。 如果只出现错误号而没有出现错误信息,则代表编译器用完了文件句柄。
21. 编译器错误 C2117
错误信息 'identifier' : array bounds overflow
错误分析 数组界限溢出 太多的数据初始给定的数组。
解决方案 请确保初始化数组元素的大小和数量与数组的定义相匹配。
举例 char abc[4] = "abcd"; // error, array contains 5 members
没有该错误,在 C++ 2.1 存在这个错误。 举例 delete [4] ArrayOfObjects; // error
25. 编译器错误 C2206
错误信息 'function' : typedef cannot be used for function definition
扫雷英雄榜——Visual C++常见错误及解决方案
1. 致命错误 C1002
错误信息 compiler is out of heap space in pass 2
错误分析 编译器在执行第二阶段堆空间溢出。 编译器运行的动态内存空间不足,在编译器(C2.EXE)执行第二阶段。通常,这意味着
__declspec(dllexport) void func() {}
// OK
24. 编译器错误 C2203
错误信息 delete operator cannot specify bounds for an array
错误分析 删除操作仅仅可以删除整个数组,不能删除一部分或者指定的数组成员,在 C++ 2.0,
宣布以关键字 EXTERN 的。
23. 编译器错误 C2201
错误信息
'identifier' : must have external linkage in order to be exported/imported 错误分析
指定的静态标识符被输出。
举例
__declspec(dllexport) static void func() {} // error, func() is static
错误分析 编译器限制:调试信息模块大小限制。
3
Visual C++从入门到精通
此错误可能是由于一个名称超过 247 个字符的符号命名造成。 解决方案
缩短符号名长度。
9. 致命错误 C1189
错误信息 #error : user supplied error message
错误分析 用户自定义错误信息。 此错误发生在程序中有一个#error 指示的时候。
数组未进行初始化。 如果一个明确的初始化(及其相应的构造)没有指定数组的成员,那么默认的构造函数 必须提供。
举例
class A { public:
A( int ); }; A a[3] = { A(1), A(2) }; class B { public:
B(); B( int ); }; B b[3] = { B(1), B(2) };
错误分析 编译器限制:键值溢出。 正在编译的文件中包含太多的符号。编译器建立了一个符号表并且使用哈希键来查找表
中的符号。此错误指示编译器已达到了自身的键值限制。 解决方案 尝试将原文件分成小的文件,并重新编译。 只包括那些绝对必要的头文件。 在可能的地方,重复使用临时和全局变量,以便减少符号生成,从而需要较少的键值
main(ห้องสมุดไป่ตู้ {
// error
17. 编译器错误 C2064
错误信息
term does not evaluate to a function 错误分析
尝试调用不存在的函数。 在需要函数表达式的地方通过评估发现并没有函数指针。
举例
int i, j; char* p; void func() {
错误分析 头文件不是一个有效的预编译头文件。 设定的文件名不是一个预编译头文件如.hpp 文件。
解决方案 确保所有命令行选项和#pragma 语句指定的预编译头文件有效。 4
扫雷英雄榜——Visual C++常见错误及解决方案 王牌8
11. 编译器错误 C2011
错误信息
'identifier' : 'type' type redefinition 错误分析
// constructor for ints only // error, no default constructor
// default constructor declared // OK
19. 编译器错误 C2081
错误信息
'identifier' : name in formal parameter list illegal 错误分析
类型重复定义。 指定的标识符已经被定义为类型。
举例
struct S; union S;
// error
12. 编译器错误 C2020
错误信息 'member' : 'class' member redefinition
错误分析 '类'的成员重新定义。 指定基类指定的成员或结构被重新定义。
解决方案 确保环境的设置是有效的,为文件指定正确的路径。 此错误可能是没有足够的文件句柄引起的。关闭一些已经打开的应用程序,然后重新编
译。 试图打开一个文件或目录,如果您没有权限可能导致此错误。将文件移动到一个您有访
问权限的目录下,或要求您的网络管理员授予您访问该文件的权限。 请确保该文件的名称拼写正确。
1
Visual C++从入门到精通
3. 致命错误 C1034
错误信息 'file': no include path set
错误分析 头文件没有设置包含路径。 INCLUDE 环境变量还没有设置。
解决方案 在工具菜单上选择选项命令进行设置。在选项对话框中,选择 Directiories 标签。显示目
7. 致命错误 C1058
错误信息 compiler limit : too many formal arguments
错误分析 编译器限制:太多的形式参数。 该函数的声明有太多的形参。
解决方案 通过结构或结构体指针减少参数的个数。
8. 致命错误 C1067
错误信息 compiler limit : debug information module size exceeded
结构/联合比较非法。 结构直接与另一个用户定义的类型进行比较导致错误。 用户定义的类型不能与另一个用户定义的类型,除非比较运算符已定义或对标量类型转 换存在。
举例
struct A {
int i; } a, b; void func() {
if( a == b ); }
// error, structure comparison
相关文档
最新文档