在下面的代碼中,當我將一個結構指針指向浮點指針時出現錯誤,但編譯器不會抱怨,如果我改寫別的東西。它爲什麼這樣做?爲什麼我會得到「指針類型的算術是必需的」?
typedef unsigned byte CELbool;
typedef struct {(...)} Color;
typedef struct {
(...)
Color color;
CELbool b;
} Light;
Light _light;
void function(float *x) {
_light.b = (CELbool)*x; // No error
_light.color = (Color)*x; // (!) Used type 'Color' where arithmetic or pointer type is required
}
編輯:所以說,我有一個* x是一個指向顏色,那麼這將是獲得該顏色的正確方法?我目前使用Color c = *((Color *)(value))
,但我不認爲這是做到這一點的正確方法。
你不會將float *指針*賦值給任何東西;您正在投射'* x',指針的引用對象,其類型爲'float'。 – jwodder 2012-03-07 01:17:04
您正在嘗試將一個浮點數轉換爲一個結構體...... – 2012-03-07 01:17:36
@EdS .:對於我嘗試的不同事物,我遇到了同樣的錯誤,所以我最初並沒有意識到這一點。我試圖將指針轉換爲Color指針,然後對其進行解引用。 – 2012-03-07 01:28:56