0

我有:

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

3 回答 3

4

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

于 2013-11-14T21:33:35.670 回答
2

您不能将指针投射到unsigned char. 您可能想要的是static_cast<unsigned char*>而不是(unsigned char).

更新:

最初,我立即认为这是一个 C++ 问题,只是因为您首先尝试进行投射。

在 C 中,您不需要void*显式转换为其他类型的指针。所以简单地写这个:

unsigned char *programBinary = malloc(binarySize);
于 2013-11-14T21:33:51.387 回答
2

malloc 函数返回一个 (void *) - 这是一个指针(W 指针,如警告消息中所述)。

因此,您需要将返回值转换为 (unsigned char*)

unsigned char *programBinary = (unsigned char*) malloc(binarySize);
于 2013-11-14T21:39:07.353 回答