相关疑难解决方法(0)

C++重定义头文件(winsock2.h)

如何防止包含两次头文件?问题是我包括了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++ header redefinition

133
推荐指数
9
解决办法
14万
查看次数

在MSVC 2010中不能包含Winsock2.h

我不能在msvc ++ 2010项目中包含WinSock2.h.起初我虽然这是我做错了,所以我创建了一个空项目来测试我的理智.空项目如下

#include <Windows.h>
#include <WinSock2.h>


int main(void){

    system("echo Hello World");
    system("pause");
    return 0;

};
Run Code Online (Sandbox Code Playgroud)

它在没有行的情况下编译和工作正常,#include <WinSock2.h>但是当我尝试包含WinSock2.h时,它会失败并出现一长串错误.

错误:

1>  Main.cpp
1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(91): warning C4005: 'AF_IPX' : macro redefinition
1>          c:\program files\microsoft sdks\windows\v7.0a\include\winsock.h(460) : see previous definition of 'AF_IPX'
1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(131): warning C4005: 'AF_MAX' : macro redefinition
1>          c:\program files\microsoft sdks\windows\v7.0a\include\winsock.h(479) : see previous definition of 'AF_MAX'
1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(168): warning C4005: 'SO_DONTLINGER' : macro redefinition
1>          c:\program files\microsoft sdks\windows\v7.0a\include\winsock.h(402) : see previous definition of 'SO_DONTLINGER' …
Run Code Online (Sandbox Code Playgroud)

visual-studio-2010 winsock2 visual-c++

7
推荐指数
1
解决办法
2万
查看次数