2011-09-20 50 views
0

我有用於填充類結構用值的結構:在一個結構中創建一個未知的數據類型數組?

MyType structMy[] = 
{ 
    { START, INTEGER_TYPE, 3, (void *)&classStart->statusStart.set }, 
    { STABLE, CHAR_TYPE, 5, (void *)&classtStable->statusStable.set }, 
    { STOP, DOUBLE_TYPE, 1, (void *)&classStop->statusStop.set  } 
} 

但對於測試和驗證欲測試用例添加到結構:其中一些依賴於每行的限定數據類型值和數值。

但由於結構設置和1值或數組,我想我需要一個(void *)。但編譯器不喜歡它。我能做些什麼來將數組寫入數據類型可以更改的結構中?

MyType structMy[] = 
{ 
    { START, INTEGER_TYPE, 3, (void*){0, 1, 2}     }, 
    { STABLE, CHAR_TYPE, 5, (void*){'A', 'B', 'C', 'D', 'E'} }, 
    { STOP, DOUBLE_TYPE, 1, (void*){2.4}      } 
} 
+1

是谷歌翻譯這是什麼? –

回答

1

編譯器希望指針出現,所以儘量在別處聲明數據:

int is[] = {0, 1, 2}; 
char cs[] = {'A', 'B', 'C', 'D', 'E'}; 
double ds[] = {2.4}; 

MyType structMy[] = 
{ 
    {START, INTEGER_TYPE, 3, (void*)is }, 
    {STABLE, CHAR_TYPE, 5, (void*)cs }, 
    {STOP, DOUBLE_TYPE, 1, (void*)ds } 
} 
0

通過告訴編譯器會發生什麼類型的,這是可以做到這樣的:

MyType structMy[] = 
{ 
    { START, INTEGER_TYPE, 3, (void*)(int[]){0, 1, 2}     }, 
    { STABLE, CHAR_TYPE, 5, (void*)(char[]){'A', 'B', 'C', 'D', 'E'} }, 
    { STOP, DOUBLE_TYPE, 1, (void*)(double[]){2.4}     } 
} 
相關問題