C语言的重定义错误,求解

C语言中经常对见到重定义的错误,起码我写代码时会这样。在看别人代码的时候,经常对看到一些自己喜欢的功能,想要把它们提取出来,写成一个头文件方便自己后面使用。这个本来也不算... C语言中经常对见到重定义的错误,起码我写代码时会这样。
在看别人代码的时候,经常对看到一些自己喜欢的功能,想要把它们提取出来,写成一个头文件方便自己后面使用。
这个本来也不算多难的事情,但是你经常要去改动文件的组织结构,这样就会涉及到头文件的包含问题,很容易就碰到重定义错误,很让人沮丧。
别人的代码为了简便,直接将功能函数和main函数写在了一起,也就是说,他根本就不需要include。文件只有2个,EnumSymbols.h和EnumSymbols.cpp。

现在我想把main函数充EnumSymbols.cpp中拿到Main.cpp中,然后在Main.cpp中includeEnumSymbols.h文件。这样后续EnumSymbols.h和EnumSymbols.cpp文件可以作为一个功能库文件来用,会比较方便。但是出现了重定义错误,是在EnumSymbols.h中定义的结构体报的错。
比如这句:
// 系统模块信息
typedef struct _SYSTEM_MODULE_INFORMATION
{
ULONG Reserved[2];
ULONG Base;
ULONG Size;
ULONG Flags;
USHORT Index;
USHORT Unknown;
USHORT LoadCount;
USHORT ModuleNameOffset;
CHAR ImageName[256];
} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;

重复包含的原因其实我也是知道的。Main.cpp和EnumSymbols.cpp都要include EnumSymbols.h。这是2个cpp文件,所以使用 #ifdef #endif或者#pragma once 都是搞不定的,那个只能解决同一文件中的重复引用。现在重复包含是出现在2个cpp文件中的,报错在obj文件连接的时候出现。

有没有啥好方式给解决下这个问题?
展开
 我来答
abc看看了
2014-02-14
知道答主
回答量:48
采纳率:0%
帮助的人:11.3万
展开全部
565646+5+976356
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式