问题:我有一个大型的Visual C++项目,我正在尝试迁移到Visual Studio 2010.它是各种来源和不同年龄段的大量组合.我遇到了问题,因为有些事情包括winsock.h和winsock2.h.
问题:显示#includeVisual Studio C++源文件的层次结构有哪些工具和技术?
我知道cl /P获取预处理器输出,但是没有清楚地显示哪个文件包含哪些其他文件(在这种情况下/P输出为376,932行8-)
在一个完美的世界中,我想要分层显示哪些文件包含哪些其他文件以及行号,以便我可以跳转到源代码:
source.cpp(1)
windows.h(100)
winsock.h
some_other_thing.h(1234)
winsock2.h
Run Code Online (Sandbox Code Playgroud) 如何防止包含两次头文件?问题是我包括了在MyClass.h中然后我将MyClass.h包含在许多文件中,因此它包含多次并发生重定义错误.怎么预防?
我正在使用#pragma而不是包含警卫,我想这很好.
MyClass.h:
// MyClass.h
#pragma once
#include <winsock2.h>
class MyClass
{
// methods
public:
MyClass(unsigned short port);
virtual ~MyClass(void);
};
Run Code Online (Sandbox Code Playgroud)
编辑:我得到的错误很少
c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(91) : warning C4005: 'AF_IPX' : macro redefinition
c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(460) : see previous definition of 'AF_IPX'
c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(124) : warning C4005: 'AF_MAX' : macro redefinition
c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(479) : see previous definition of 'AF_MAX'
c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(163) : warning C4005: 'SO_DONTLINGER' : macro redefinition
c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(402) : …Run Code Online (Sandbox Code Playgroud) 如何使用C++中的boost创建线程池,如何将任务分配给线程池?
我已经创建了一个套接字包装类,但是我有太多的错误,我无法弄清楚如何解决.我尝试了Winsock教程错误,并且不能在MSVC 2010中包含Winsock2.h,但没有用
这是代码:
//#define WIN32_LEAN_AND_MEAN
#include <iostream>
#include <string>
#include <Windows.h>
#include <WinSock2.h>
#include <WS2tcpip.h>
#pragma comment(lib,"ws2_32_lib")
using namespace std;
#define WM_SOCKET 0x10000
class Socket
{
};
Run Code Online (Sandbox Code Playgroud)
以下是错误:
Error 107 error C3861: 'WSAStartup': identifier not found \85 1 Project2_SocketLib
Error 89 error C3861: 'WSASetLastError': identifier not found C:\Program Files (x86)\Windows Kits\8.0\Include\um\WS2tcpip.h 696 1 Project2_SocketLib
Error 90 error C3861: 'WSASetLastError': identifier not found C:\Program Files (x86)\Windows Kits\8.0\Include\um\WS2tcpip.h 703 1 Project2_SocketLib
Error 91 error C3861: 'WSASetLastError': identifier not …Run Code Online (Sandbox Code Playgroud) c++ ×4
boost ×1
boost-asio ×1
boost-thread ×1
c ×1
header ×1
include ×1
redefinition ×1
sockets ×1
threadpool ×1
windows ×1