如何跳过包含头文件到特定C / CPP文件

时间:2013-03-25 13:30:50

标签: c++ c visual-studio-2010

我想在我新开发的代码中跳过包含头文件。 我正在开发visual studio中的两个项目(或解决方案)。两者都相互依赖。 假设,

Project_1.sln包含一个标头文件MyHeader.hMyHeader.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移动到其他文件,还有其他解决方案吗? 请帮帮我,我该如何解决这个问题。

2 个答案:

答案 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.hAnother.h包括在内,并且受"include guard"保护,如上所示。< / p>