typedef struct foo_s {
int a;
} foo;
typedef struct bar_s {
foo;
int b;
} bar;
基本上我想做的事:我可以在C中擴展一個結構嗎?
bar b;
b.a;
我知道我能做到b.foo_name.a如果我命名的酒吧foo的結構,但編號不喜歡。
任何方式來做到這一點?
這個問題已經得到了各種不同的答案,所以讓我解釋一下需求。我想這樣做的原因是因爲我有一個庫,我需要適應我的情況,這意味着我不能修改原始結構體的刪除。此外,我需要做的就是在結構的開頭添加1項(爲什麼開始?因爲我有一個'object'結構,它負責項目中的所有結構)。我可以簡單地嵌入像你提到的結構,但它真的很煩人,因爲所有的引用都需要鍵入'variable-> image.location'這個'image'。鍵入十億種類型真的很煩人。
一些編譯器提供的正是這樣的行爲一個延伸。就我個人而言,我認爲它提供了太多的風險(嵌套'結構'六層深,忘記了你使用的名稱),所以我只是將第一個成員'_'命名 - 簡短,一致,不會很不方便。 (這個名字可能實際上是由標準和/或編譯器保留的,但是我懷疑如果是的話,任何人都會使用它。) –
如果'image'很煩,請使用'img'。使用查找和替換爲你做。不要擔心 - 無論你最終需要做什麼,你都會活下來。 –
@ chacham15老兄,避免將C問題標記爲C++。這兩個是完全不同的語言。 –