2013-03-25 60 views
1

我想跳过在我新开发的代码中包含头文件。 我正在开发Visual Studio中的两个项目(或解决方案)。两者都相互依赖。 假设,如何跳过将头文件包含到特定C/CPP文件中

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作为MyHeader.hProject_1.sln

Header2.h file

typedef enum{ 
    hello, hi, bye 
    }MyEnum; 

所以,我用/ FORCE曾尝试:多,但它不工作。 我也无法更改枚举名称,因为它们在两个项目中的许多地方都得到了使用。

当我在我的MyTest.c文件中使用时,我需要同时使用header files

MyTest.c File

#include "Header2.h" 
#include "Another.h" 

这里Another.h文件内部包括MyHeader.h文件。 而不是将enum移动到其他文件,有没有其他解决方案? 请帮帮我,我该如何解决这个问题。

+1

将'enum'放在一个'MyEnum.h'文件中,并将其包含在需要的地方? – juanchopanza 2013-03-25 13:33:31

+0

要么向前声明枚举并在您的.c文件中执行#include,要么将枚举放入它自己的.h中,并将其包含在依赖头文件中。 – 2013-03-25 13:34:11

+0

@所有: - Dipto的答案为我工作..不管怎样感谢所有。 – 2013-03-25 13:50:28

回答

3

您可以使用enum部分的条件编译如下:

#ifndef MY_ENUM 
#define MY_ENUM 
    typedef enum{ 
    hello, hi, bye 
    }MyEnum; 
#endif 
在这两个文件

+0

这真的对我有用......谢谢 – 2013-03-25 13:49:57

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 

但有这种2路依赖性一般是迷茫设计的标志,你应该尝试解决它,可能通过添加第三个模块。


加成重新阅读的问题后:如果这些都有独立的枚举,其中恰好有相同的名称和内容,那么你应该把两者a different namespace。如果它们是相同的枚举,则将其定义在只有一个头文件中,该文件既包括Header2.hAnother.h,也包含受"include guard"保护的文件,如上所示。

相关问题