【发布时间】:2010-11-25 06:44:48
【问题描述】:
正如标题所说。由于多次包含头文件,我遇到了重新定义错误。我知道是因为这个,但我不知道如何解决。是的,我之前提前一个小时在 SO 中发布了同样的问题。但我无法正确解释(我想是这样),也没有得到预期的答案。这是链接:
我没有编辑那个问题,因为它已经被填满了:)。
好的,我有一些类,它们的结构是这样的:
main.cpp:
#include "Server.h"
#include "Handler.h"
#include "Processor.h"
int main(int argc, char* argv[])
{
}
Server.h:
// Server.h
#pragma once
#include <winsock2.h>
Handler.h:
// Handler.h
#pragma once
#include <string>
#include <vector>
#include "Server.h"
Processor.cpp:
// Processor.cpp
#include "StdAfx.h"
#include "Processor.h"
#include "Handler.h"
Server.cpp:
// Server.cpp
#include "Server.h"
#include "Processor.h"
问题是<winsock2.h> 被多次包含,不知道在哪里,但它在哪里。 #pragma once 的作用与
#ifndef SOME_FILE_H
#define SOME_FILE_H
// code here
#endif // SOME_FILE_H
在我的编译器中(在本例中为 MSVC2008)。所以我很确定我不需要标题包括警卫。但是你能发现我在哪里犯了两次包含<winsock2.> 的错误吗?我该如何解决?
谢谢
【问题讨论】:
-
StdAfx.h 中有什么?
-
问同一个问题两次会造成重复。投票结束。
标签: c++ file header redefinition