我想在我新开发的代码中跳过包含头文件。 我正在开发visual studio中的两个项目(或解决方案)。两者都相互依赖。 假设,
Project_1.sln
包含一个标头文件MyHeader.h
。 MyHeader.h
包含enum
,
MyHeader.h file
typedef enum{
hello, hi, bye
}MyEnum;
在Project_2.sln
中包含一个名称为Header2.h
的头文件。 Header2.h
还包含来自same enum
的{{1}} MyHeader.h
。
Project_1.sln
Header2.h file
所以,我尝试过使用/ FORCE:MULTIPLE,但它没有用。 我也无法更改枚举名称,因为它们在两个项目的许多地方都被使用。
当我在 typedef enum{
hello, hi, bye
}MyEnum;
文件中使用时,我需要同时使用MyTest.c
。
header files
MyTest.c File
此处#include "Header2.h"
#include "Another.h"
文件内部包含Another.h
文件。
而不是将MyHeader.h
移动到其他文件,还有其他解决方案吗?
请帮帮我,我该如何解决这个问题。
答案 0 :(得分:3)
您可以使用enum
部分的条件编译为:
#ifndef MY_ENUM
#define MY_ENUM
typedef enum{
hello, hi, bye
}MyEnum;
#endif
在两个文件中。
答案 1 :(得分:2)
在Header2.h中:
#ifndef HEADER2_H
#define HEADER2_H
...current contents of Header2.h
#endif // HEADER2_H
在Another.h中:
#ifndef ANOTHER_H
#define ANOTHER_H
...current contents of Another.h
#endif // ANOTHER_H
但是这种双向依赖通常是设计混乱的表现,你应该尝试解决它,可能是通过添加第三个模块。
在重新阅读问题之后添加:如果这些实际上是单独的枚举,恰好具有相同的名称和内容,那么您应该将两者都放到a different namespace。如果它们是相同的枚举,则只在一个头文件中定义它,您将Header2.h
和Another.h
包括在内,并且受"include guard"保护,如上所示。< / p>