我有兩個c文件,具有功能的foo.c和測試foo.c的功能的test_foo.c。如何聲明extern typedef結構體?
有沒有辦法訪問struct typedef BAR
我在test_foo.c中的foo.c中定義的,而不使用頭文件?到目前爲止,我能夠避免一個h文件,因此整個程序將由foo.c組成。謝謝。
foo.c
typedef struct BAR_{...} bar;
BAR *bar_new(...) {..}
test_foo.c
extern BAR *bar_new(...)
error: expected declaration specifiers or ‘...’ before ‘BAR’
只有在test_foo.c(或foo.c以外的任何其他模塊)需要訪問內容結構本身時,將定義移動到頭文件纔是正確的解決方案。如果是ADT或其他原因,test_foo.c不需要類型的內部消息,我認爲前向聲明是更好的解決方案。 – harald 2010-07-12 10:42:47
現在,我只是將定義複製到其他c文件中。 – Framester 2010-07-12 12:48:30
我正在做同樣的事情 - 我正在開發一個測試工具,應該包裝生產代碼。在生產守則中,結構定義沒有公開的業務,應該被埋沒。因此我必須將定義複製到我的測試工具中。這是重複的,但我的鏈接器足夠聰明,可以給我警告,如果一個變化,而不是另一個。 – Nick 2014-12-03 23:35:51