编程常见错误
来源:互联网 发布:达内培训java费用 编辑:程序博客网 时间:2024/05/06 18:13
(11)error C2065:”cout”:undeclared identifier
不仅仅要包含头文件,还要命名空间,理解C头文件和C++头文件。
#include <iostream>
using namespace std;
(12)errorC3872:’0x3000’:this character is not allowed inan identifier(error C3872:’0x3000’:此字符不允许在标识符中使用)
主要出现在文档中拷贝程序代码时,由于含有中文字符空格造成的。
解决方法:检查出错的行数的前一行和后一行,删除所有的空格,并确保输入法状态是英文状态,再敲入需要的空格。
(13)error LNK2005:已经在XXX.obj中定义
造成LNK2005重复定义错误主要以下几种情况:
1. 重复定义全局变量。
2. 头文件的包含重复。
3. 使用第三方库造成的。
(14)errorLNK2019:无法解析的外部符号XXX,该符号在函数XXX中被引用。
若是静态库lib或dll,是否添加依赖项?
函数是否定义?
是否包含头文件?
如果是静态库或动态库,解决方法:
代码方式:#pragma comment(lib,"XXX.lib")
设置方式:
右键点击项目名称->属性->链接器->常规->附加库目录->填入需要加的库所在目录
右键点击项目名称->属性->链接器->输入->附加依赖项->填入需要加的库文件名
(15)fatalerror C1083:无法打开包括文件:”XXX.h”:Nosuchfile or directory
右键点击项目名称->属性->C/C++->常规->附加包含目录->填入需要加的库所在目录
(14)(15)注意用相对路径不要用绝对路径,其实最好的方法是:用代码设置。
(16)error C2011:’fd_set’:’struct’ type redefinition,errorC2011: “sockaddr”: “struct”类型重定义
调整头文件的调用顺序,在Windows.h前先引用WinSock2.h,即
#include <Windows.h>
#include <WinSock2.h>
或不调整头文件顺序,在所有#include <Windows.h>前使用#defineWIN32_LEAN_AND_MEAN宏
(17)error C2110:cannot add twopointer “+”不能添加两个指针
当进行string 对象和字符串字面值混合连接操作时,+操作符的左右操作
数必须至少有一个是string 类型的
(18)fatal error C1189:#error:Please use the /MDswitch for_AFXDLL builds
两个解决方法:1.右键点击项目名称->属性->C/C++->代码生成->运行时库修改成:多线程调试(/MTD)(release版本修改成多线程/MT)
2. 右键点击项目名称->属性->常规->MFC的使用修改为:在静态库中使用MFC。
(19) errorC2061:语法错误:标识符”_TCHAR”
添加#include<tchar.h>
(20) errorC3861:”sprintf”:找不到标识符
包含头文件#include <stdio.h>
(21)Debug版本,编译生成成功,运行,弹出对话框:没有找到mfc90ud.dll<mfcXXX.dll>。
项目属性->配置属性->链接器->调试->生成映射文件选择:是(/MAP)
(22)error C2065:’IDD_DIALOG’:undeclared identifier
在主文件中加入#include “resource.h”
(23)error C2440:’static_cast’:cannot convert from ‘LRESULT(_thiscallCXXDlg::*)(CPoint)’ to ‘UNIT (_thiscall CWnd::*)(CPoint)
因为旧版本的ON_WM_NCHITTEST宏使用了UINT (_thiscall CWzButton::*)(CPoint);类型的类成员函数指针,其定义如下:
#define ON_WM_NCHITTEST()\
{
WM_NCHITTEST,0,0,0,AfxSig_wp,\
(AFX_PMSG)(AFX_PMSGW)(UINT(AFX_MSG_CALL CWnd::*)(CPoint)&OnNcHitTest},
#defineON_WM_NCHITTEST()\
{WM_NCHITTEST, 0, 0, 0,AfxSig_wp, \
(AFX_PMSG)(AFX_PMSGW)(UINT(AFX_MSG_CALLCWnd::*)(CPoint)&OnNcHitTest) },
新版本的是:
#defineON_WM_NCHITTEST()\
{WM_NCHITTEST, 0, 0, 0,AfxSig_l_p, \
(AFX_PMSG)(AFX_PMSGW)\
(static_cast<LRESULT (AFX_MSG_CALLCWnd::*)(CPoint)> (&ThisClass ::OnNcHitTest)) },
返回值类型由UINT改成了LRESULT,再加上static_cast的严格检查,所以出错。
解决方法:将OnNcHitTest函数由:
afx_msg UINT OnNcHitTest(CPoint point);
改成:
afx_msg LRESULT OnNcHitTest(CPoint point);
(24)Xdebug Errors:Xdebug(32):error C2365:’operatornew’:redefinition;previous definition was ‘function’
原因:MFC和标准库混用
解决方法:方法一:把所有文件里面#definenew DEBUG_NEW全部删除
方法二:保证使用了new的语句在宏#define newDEBUG_NEW的前面。
(25)fatal errorC1189: #error : WINDOWS.H already included. MFC apps must not #include<windows.h>
遇到问题情况:
试试把#include<afx.h>挪到最靠前位置;
#import"c:\ProgramFiles\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF","EndOfFile")
#include<afx.h>
解决方法:
把#include<afx.h>挪前不行的话,就看看项目属性里有没有定义_WINDOWS_这个宏,有的话就去掉。
- 编程常见错误
- 本人编程常见错误
- c编程常见错误
- 嵌入式 编程常见错误
- C++编程常见错误
- 编程常见错误
- 编程常见错误
- Java 编程常见错误
- 编程常见错误
- C++常见编程错误
- 常见编程错误
- 原创:常见C编程错误
- socket编程常见错误总结
- Oracle .net 编程常见错误
- C++编程常见错误整理
- C++编程常见错误整理
- 数组编程中的常见错误
- java常见编程错误解答
- 4、5月流水账总结
- 黑马程序员_基础(三)_其他对象
- Accelerated C++学习笔记7—<使用库算法>
- 188_2225_9866
- 键盘扫描原理
- 编程常见错误
- linux远程拷贝下载文件 - ftp命令和scp命令
- struts2线程安全
- OCP 1Z0 051 87
- Java中的Timer类
- 关于jstl
- 购书笔记
- 黑马程序员_面向对象(一)_封装
- iOS网络编程 ASIHTTPRequest 详解, http 请求终结者