由于多次包含头文件而导致C++重新定义

aki*_*kif 2 c++ header file redefinition

正如,标题所说.由于多次包含头文件,我遇到了重定义错误.我知道它的原因,但我不知道如何解决.是的,我之前在一小时内发布了相同的问题.但我无法正确解释(我认为如此),并没有得到预期的答案.链接在这里:

C++重定义头文件

我没有编辑那个问题,因为它已被填满:).

好吧,我有一些类,它们的结构是这样的:

main.cpp中:

#include "Server.h"
#include "Handler.h"
#include "Processor.h"

int main(int argc, char* argv[])
{

}
Run Code Online (Sandbox Code Playgroud)

Server.h:

// Server.h
#pragma once

#include <winsock2.h>
Run Code Online (Sandbox Code Playgroud)

handler.h中:

// Handler.h
#pragma once

#include <string>
#include <vector>

#include "Server.h"
Run Code Online (Sandbox Code Playgroud)

Processor.cpp:

// Processor.cpp

#include "StdAfx.h"
#include "Processor.h"
#include "Handler.h"
Run Code Online (Sandbox Code Playgroud)

Server.cpp:

// Server.cpp

#include "Server.h"
#include "Processor.h"
Run Code Online (Sandbox Code Playgroud)

问题是<winsock2.h>包括多次,不知道在哪里,但它是.#pragma曾经有同样的目的

#ifndef SOME_FILE_H
#define SOME_FILE_H
// code here
#endif // SOME_FILE_H
Run Code Online (Sandbox Code Playgroud)

在我的编译器(在这种情况下为MSVC2008).所以我非常确定我不需要头部包含警卫.但你能否发现我在做错误的地方,<winsock2.>包括两次,我该如何解决?

谢谢

Pao*_*sco 6

在项目设置中:项目属性 - >配置 - >高级 - >显示包含.

它将转储包含树的标题,从那里你将能够看到罪魁祸首.