2014-10-08 50 views
1

我會很感激與下一個C結構轉換爲德爾福如何C結構轉換與工會內部德爾福

struct MATRIX 
{ 
    union 
    { 
     struct 
     { 
     float _11, _12, _13, _14; 
     float _21, _22, _23, _24; 
     float _31, _32, _33, _34; 
     float _41, _42, _43, _44; 
     }; 
     float m[4][4]; 
    }; 
}; 

我讀過魯迪的文章有關轉換http://rvelthuis.de/articles/articles-convert.html任何幫助,但還是無法弄清楚如何處理聯合中的匿名結構..

感謝您的任何幫助或建議。

+0

在這種情況下,你是幸運的,沒有必要擔心匿名聯合德爾福失蹤。所有變體成員都在struct結尾,所以翻譯非常簡單。 – 2014-10-08 21:59:02

+0

我明白了,謝謝! – anikoy 2014-10-08 22:28:27

+0

只是FWIW,我在這裏解釋一下:[轉換的陷阱](http://rvelthuis.de/articles/articles-convert.html#unions)。 – 2014-10-10 09:24:35

回答

4

使用variant record

type 
    Matrix = record 
    case boolean of 
    false: (_11,_12,_13,_14, 
      _21,_22,_23,_24, 
      _31,_32,_33,_34, 
      _41,_42,_43,_44: Single); 
    true: (m: array[0..3,0..3] of Single); 
    end; 
+0

'float'是單精度的,除非特別重新定義。 – 2014-10-08 21:42:56

+0

這很簡單..謝謝! – anikoy 2014-10-08 22:29:17