2013-11-14 14 views
0

鑄造一個指針,我有:錯誤使用C

unsigned char *programBinary = (unsigned char) malloc(binarySize); 

但我發現了以下錯誤:

test.c:127:34: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] 
test.c:127:33: error: invalid type argument of unary ‘*’ (have ‘int’) 

這是相當新的給我,讓我不確定如何解決這個問題。

回答

4

你需要投(unsigned char*)(unsigned char)

+0

真棒,謝謝!我會盡我所能接受。 – n0pe

+0

沒問題。感謝@Justin Etherier,忘記了代碼塊。 –

2

你不能一個指針轉換爲unsigned char。你可能想要的是static_cast<unsigned char*>而不是(unsigned char)

UPDATE:

起初我也馬上想到,這是一個C++的問題,因爲你試圖在首位投。

在C中,您不需要明確地將void*轉換爲其他類型的指針。所以,簡單地寫:

unsigned char *programBinary = malloc(binarySize); 
+1

但是'static_cast'不是C而是C? –

+0

@JustinEthier:對不起,我認爲這是一個C++問題,因爲在C中根本不需要演員。我已經更新了我的答案。感謝您的領導! – 2013-11-14 21:47:28

2

malloc函數返回一個(void *的) - 這是一個指針(如警告消息指出W-指針)。

因此,你需要將返回值轉換爲(無符號字符*)

unsigned char *programBinary = (unsigned char*) malloc(binarySize);