关于MFC和c++标准库 情况说明:我现在在改写一个老师的代码,发现一个问题,这是一个MFC工程,我想在其中利用vector 于是#include<vector>但是这样会产生很多编译错误,难道MFC库和标准c++库有冲突? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using namespace std;vector 是定义在std名字空间的容器模板类,需要使用std;同样iostream ,string ,bitset 这些头文件也是需要声明一下名字控件 是在vs2005下,不过用的是 intel 编译器至于错误,都是些 类型错误 需要指定使用哪里的string多字节和宽字节也得注意一下 多谢楼上各位啊,没想到 csdn这么火爆.....这么多热心人我马上贴错误和代码 你把#include<vector>放在stdafx.h中试试 因为工程很大 我贴出修改的地方#include <vector>using namespace std;#if !defined(AFX_CLIENTSOCKET_H__6DB130BE_1C05_4B7F_BD57_81BF1AD0F351__INCLUDED_)#define AFX_CLIENTSOCKET_H__6DB130BE_1C05_4B7F_BD57_81BF1AD0F351__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000/////////////////////////////////////////////////////////////////////////////// CClientSocket command target class AFX_EXT_CLASS CClientSocket {public: CClientSocket(SOCKET hSocket = INVALID_SOCKET); virtual ~CClientSocket(); //读写数据,返回实际读写的字节数 public: BOOL Create(); public: int ReadData(char*& pBuffer, int bufsize); SOCKET Detatch(); void Attach(SOCKET hSock); BOOL CreateListenSocket(int nPort); int Write(const void *pData, int nLen); int WriteData(const void *pData, int nLen); int Read(void *pData, int nLen); SOCKET FromHandle(); SOCKET Accept(); BOOL Connect(LPCTSTR lpszHostAddress, UINT nHostPort ); void Close(); int m_nPort; SOCKET m_hSocket; vector<int> temp; protected: private: int SetIntOption(int level, int optname, int val); BOOL InitializeSocket(int nPort); DWORD IniSOCKDLL();};///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////template<class T>BOOL RawRead(CClientSocket& rSocket, T& data){ return (rSocket.Read (&data, sizeof(T)) == sizeof(T));}template<class T>BOOL RawWrite(CClientSocket& rSocket, const T& data){ return (rSocket.Write (&data, sizeof(T)) == sizeof(T));}///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_LISTENSOCKET_H__6DB130BE_1C05_4B7F_BD57_81BF1AD0F351__INCLUDED_)这是部分代码 错误如下d:\Program Files\Microsoft Visual Studio 8\VC\include\yvals.h(499): error: invalid redeclaration of type name "VT_TYPE" (declared at line 40 of "D:\GZFM2005\PdemClientStub\NetFileShare.h")2> typedef _ULONGLONG _ULonglong;2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\eh.h(55): error: expected a ")"2> typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\eh.h(55): error: expected an identifier2> typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\eh.h(55): error: expected an identifier2> typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(499): error: type name is not allowed2> return ((unsigned char)_Ch);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(499): error: expected a ")"2> return ((unsigned char)_Ch);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(499): error: expected a ")"2> return ((unsigned char)_Ch);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(499): error: expected an identifier2> return ((unsigned char)_Ch);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: declaration is incompatible with "void __cdecl std::_Debug_message(const char *, const char *)" (declared at line 59)2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: variable "std::_Debug_message" may not be initialized2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: type name is not allowed2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: expected an expression2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: expected a ")"2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: incomplete type is not allowed2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: expected a ";"2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(241): error: expected a ")"2> const wchar_t *_Where, unsigned int _Line)2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(241): error: expected a ";"2> const wchar_t *_Where, unsigned int _Line)2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(440): error: not a class or struct name2> : public input_iterator_tag2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(632): error: expected a ">"2> template<> struct iterator_traits<unsigned char>2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(632): error: expected an identifier2> template<> struct iterator_traits<unsigned char>2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(633): error: expected a ";"2> { // get traits from integer type2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(664): error: expected a ">"2> template<> struct iterator_traits<unsigned short>2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(664): error: expected an identifier2> template<> struct iterator_traits<unsigned short>2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(665): error: expected a ";"2> { // get traits from integer type2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(684): error: expected a ">"2> template<> struct iterator_traits<unsigned int>2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(684): error: expected an identifier2> template<> struct iterator_traits<unsigned int>2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(685): error: expected a ";"2> { // get traits from integer type2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(704): error: expected a ">"2> template<> struct iterator_traits<unsigned long>2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(704): error: expected an identifier2> template<> struct iterator_traits<unsigned long>2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(705): error: expected a ";"2> { // get traits from integer type2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(745): error: expected a ">"2> template<> struct iterator_traits<_ULONGLONG>2> ^2>2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(745): error: expected an identifier2> template<> struct iterator_traits<_ULONGLONG> 不包含<vector>的时候会编译成功吗? 关于ActiveX控件的菜鸟问题 类间传递参数简单问题 求解这个错误 大家在VC++数据库开发时一般用哪种? 关于《Windows核心编程》代码编译问题 庆贺我考上大学!!!散分!!!! 请教一个关于派生新视图类的小问题 工具:SourceInside...... 软件发布,大家帮忙测试一下,提供任何bug报告和建议者有分! 有NT下的ipman吗? 我定义CSplitButton m_spBtnNew变量总是提示未定义的标识符,我添加了下面两个头文件仍旧不可以,为什么呢? 将一个文本文档(txt)读入edit box,为何edit box不能识别txt中的换行?
vector 是定义在std名字空间的容器模板类,需要使用std;
同样iostream ,string ,bitset 这些头文件也是需要声明一下名字控件
是在vs2005下,不过用的是 intel 编译器
至于错误,都是些 类型错误
多字节和宽字节也得注意一下
我马上贴错误和代码
#include <vector>
using namespace std;
#if !defined(AFX_CLIENTSOCKET_H__6DB130BE_1C05_4B7F_BD57_81BF1AD0F351__INCLUDED_)
#define AFX_CLIENTSOCKET_H__6DB130BE_1C05_4B7F_BD57_81BF1AD0F351__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000/////////////////////////////////////////////////////////////////////////////
// CClientSocket command target class AFX_EXT_CLASS CClientSocket
{
public:
CClientSocket(SOCKET hSocket = INVALID_SOCKET);
virtual ~CClientSocket();
//读写数据,返回实际读写的字节数 public:
BOOL Create();
public:
int ReadData(char*& pBuffer, int bufsize);
SOCKET Detatch();
void Attach(SOCKET hSock);
BOOL CreateListenSocket(int nPort);
int Write(const void *pData, int nLen);
int WriteData(const void *pData, int nLen); int Read(void *pData, int nLen);
SOCKET FromHandle();
SOCKET Accept();
BOOL Connect(LPCTSTR lpszHostAddress, UINT nHostPort );
void Close();
int m_nPort;
SOCKET m_hSocket;
vector<int> temp;
protected:
private:
int SetIntOption(int level, int optname, int val);
BOOL InitializeSocket(int nPort);
DWORD IniSOCKDLL();
};/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
template<class T>
BOOL RawRead(CClientSocket& rSocket, T& data)
{
return (rSocket.Read (&data, sizeof(T)) == sizeof(T));
}template<class T>
BOOL RawWrite(CClientSocket& rSocket, const T& data)
{
return (rSocket.Write (&data, sizeof(T)) == sizeof(T));
}/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_LISTENSOCKET_H__6DB130BE_1C05_4B7F_BD57_81BF1AD0F351__INCLUDED_)这是部分代码
2> typedef _ULONGLONG _ULonglong;
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\eh.h(55): error: expected a ")"
2> typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\eh.h(55): error: expected an identifier
2> typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\eh.h(55): error: expected an identifier
2> typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(499): error: type name is not allowed
2> return ((unsigned char)_Ch);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(499): error: expected a ")"
2> return ((unsigned char)_Ch);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(499): error: expected a ")"
2> return ((unsigned char)_Ch);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(499): error: expected an identifier
2> return ((unsigned char)_Ch);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: declaration is incompatible with "void __cdecl std::_Debug_message(const char *, const char *)" (declared at line 59)
2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: variable "std::_Debug_message" may not be initialized
2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: type name is not allowed
2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: expected an expression
2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: expected a ")"
2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: incomplete type is not allowed
2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: expected a ";"
2> _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(241): error: expected a ")"
2> const wchar_t *_Where, unsigned int _Line)
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(241): error: expected a ";"
2> const wchar_t *_Where, unsigned int _Line)
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(440): error: not a class or struct name
2> : public input_iterator_tag
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(632): error: expected a ">"
2> template<> struct iterator_traits<unsigned char>
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(632): error: expected an identifier
2> template<> struct iterator_traits<unsigned char>
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(633): error: expected a ";"
2> { // get traits from integer type
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(664): error: expected a ">"
2> template<> struct iterator_traits<unsigned short>
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(664): error: expected an identifier
2> template<> struct iterator_traits<unsigned short>
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(665): error: expected a ";"
2> { // get traits from integer type
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(684): error: expected a ">"
2> template<> struct iterator_traits<unsigned int>
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(684): error: expected an identifier
2> template<> struct iterator_traits<unsigned int>
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(685): error: expected a ";"
2> { // get traits from integer type
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(704): error: expected a ">"
2> template<> struct iterator_traits<unsigned long>
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(704): error: expected an identifier
2> template<> struct iterator_traits<unsigned long>
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(705): error: expected a ";"
2> { // get traits from integer type
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(745): error: expected a ">"
2> template<> struct iterator_traits<_ULONGLONG>
2> ^
2>
2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(745): error: expected an identifier
2> template<> struct iterator_traits<_ULONGLONG>