2015-12-19 45 views
0

我已經搜索了這個答案,但很難找到任何東西,因爲這個問題很難說。如何將結構嵌入另一個結構中,當它們在單獨的文件中定義時?

比方說我們有file1.h它定義了一個結構:

//file1.h 

struct foo{ 
    int param1; 
    ... 
}; 

後來我想將這一FOO結構到在不同的文件中定義的一般結構吧:

//file2.h 
#include "file1.h" 

struct bar{ 
    struct foo foo1; 
    int param 
    ... 
} 

我希望它是相同的結構定義,以便我不必修改具有相同參數的兩個結構體,並且我不想使用指針,因爲我有一些序列化操作像例程那樣。另外,我希望foo在file1.h中定義,所以我不必在每次使用file1的函數時在其他地方定義它。這是可能的,這是一個好主意嗎?

(我想實現模塊化,其中file1.c中可以使用,也可以單獨或者直接捆綁到file2中的代碼,而不必到處重新定義結構)

+0

我要去編輯這樣說file2中的#include「file1.h」,讓人們不認爲這就是錯誤lol – dg123

回答

3

這是非常可能的,它是用來到處。

//file2.h 

#include "file1.h" 

struct bar { 
    struct foo foo; 
    int param; 
    ... 
}; 

#include指令告訴預處理器轉儲file1.h所有內容到file2.h。

這就是你一直在做的事情。您輸入#include <stdio.h>以獲取printf,scanf等功能的刪除。當然,這適用於結構,類型和其他東西。如果你做得對,你甚至可以共享變量。

+0

不幸的是我現在不工作,所以我不能再檢查,但它似乎沒有工作,當我做到了(儘管它允許我包含指向結構的指針。)這就是說,它的好知道它應該。謝謝! – dg123

0

您需要進行一些調整。

//file2.h 

#include "file1.h" // <===================== include file here 

struct bar { 
    struct foo var_foo; // <================ fix syntax here 
    int param 
}; 

如下您要訪問的struct foo嵌入struct bar領域:

#include "file2.h" 

int main() { 
    struct bar var_bar;   
    var_bar.var_foo.param1 = 0; 
} 
+0

你也是對的,我爲我這個草率的例子道歉。問題在於它沒有使用正確的語法,結果我不確定它是否可能。我只是想知道這是否可能。我會再編輯我的問題。 – dg123

相關問題