假設我有一組數組和字符串和常量:如何關聯一組變長變量?
const int a[]={0x01, 0x02};
const int b[]={2,0};
const int c=234;
const char* name="foo";
一起構成了對象foo。
而且有很多相似的對象,如
const int a[]={0x04, 0x02, 0x03};
const int b[]={2,0,1};
const int c=1234;
const char* name="arfle";
什麼是宣佈用C這些對象的最佳方式? (特別是GCC,我也用gcc-只擴展,C99等沒有問題。)
我希望這樣的事情
thing[0]={a={0x04, 0x02, 0x03}, b={2,0,1}, c=1234, name="arfle"};
thing[1]={a={0x01, 0x02}, b={2,0}, c=234, name="foo"};
printf("%s", thing.name);
但是,解決一般問題會做的任何整齊的方法。 我可以放在任何陣列的最大長度,雖然額外的功勞,如果我不必。 我對預處理器的技巧沒有任何問題,運行時初始化不會殺死我,儘管我寧願儘可能避免它。
你不能以這種方式初始化你的'struct'對象,成員是指針而不是數組。 – ouah 2012-01-13 11:40:09
這將是美好的,但我似乎無法得到它編譯。 – 2012-01-13 11:41:22
@JohnLawrenceAspden在C99中,您可以在@unwind代碼中使用複合文字作爲初始化符:像'(int [3]){4,3,2}'而不是'{4,3,2}' – ouah 2012-01-13 11:45:34