比方說,我有兩個靜態分配的全局數組:創建其他兩個數組
const int foo[] = {1, 2, 3};
const int bar[] = {4, 5, 6, 7};
同一編譯單元上後來我想聲明,也靜態分配,是一個數組的foo
和bar
串聯:
const int foo_and_bar[] = ... ?
可能或不?
當然,我可以做一些醜陋與像宏...
#define FOO_CONTENTS 1, 2, 3
#define BAR_CONTENTS 4, 5, 6, 7
const int foo[] = {FOO_CONTENTS};
const int bar[] = {BAR_CONTENTS};
const int foo_and_bar[] = {FOO_CONTENTS, BAR_CONTENTS};
...但我正在尋找在C語言本身支持的成語。
「真醜」這個優雅且極其簡單的解決方案有什麼問題? – Leushenko
也許我剛纔說過「醜陋」 - 「真醜」可能是誇張!這很醜陋,因爲每個數組聲明都需要分解成一個宏和聲明,而不是僅僅表示「這個數組應該包含這兩個先前聲明的變量的內容」。讀取代碼更加困難,因爲您需要破譯宏並在文件中找到它等等。當然,沿着這些行(將靜態分配的int放入數組等等)的許多其他場景不需要預處理器支持。 – BeeOnRope