2013-03-25 85 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"保護的文件,如上所示。