带有重复项的C头文件

带有重复项的C头文件,c,header-files,C,Header Files,我有两个重叠的头文件,如下所示: header1.h ... __declspec(dllexport) void abc(); __declspec(dllexport) void xyz(); ... #define value1 1 #define value2 2 ... __stdcall void abc(); __stdcall void xyz(); ... header2.h ... __declspec(dllexport) void abc(); __decls

我有两个重叠的头文件,如下所示:

header1.h

...
 __declspec(dllexport) void abc();
 __declspec(dllexport) void xyz();
...
#define value1 1
#define value2 2
...
__stdcall void abc();
__stdcall void xyz();
...
header2.h

...
 __declspec(dllexport) void abc();
 __declspec(dllexport) void xyz();
...
#define value1 1
#define value2 2
...
__stdcall void abc();
__stdcall void xyz();
...
main.c

#include "header1.h"
#include "header2.h"

main()
{
     somefunc(xxx, value1);
}

我收到编译错误(dll链接不一致)。请帮我修一下。谢谢。

< P>在C和C++编程语言中,包含一个包含保护的宏,有时称为宏守卫,是一个特殊的构造,用于避免在包含指令

处理时包含双重包含的问题。 可能对您有用,有以下概念标题保护:


这是不可能的!我们不能有相同的函数名和不同的签名,并包括如上所示。谢谢大家抽出时间。

您实际使用的标题是什么?给你带来问题的实际符号是什么?如果它们是您自己的代码,则可以在另一个代码中包含一个标题,或者保持声明不变。
\uu stdcall#define value1 1
??您可以为编译器提供两个
abc()
函数。其中一个有
\u declspec(dllexport)
,另一个没有。它们必须具有相同的签名。问题是它们具有不同的签名,并且无法编辑:(我认为在这种情况下没有解决方案。不能将它们放在同一代码中。