0
gcc -g -O2 struct.c -o struct
struct.c: In function ‘secondfunction’:
struct.c:19:2: error: cannot convert to a pointer type
firstfunction((void *)onedata->c,(void *)&twodata.c,2);
^~~~~~~~~~~~~
<builtin>: recipe for target 'struct' failed
make: *** [struct] Error 1
我試圖通過memcpy複製結構的內容到另一個結構時使用指針。但是當我將指針傳遞給函數結構時,我不能將它轉換爲void。「無法轉換爲指針類型」通過訪問結構通過指針
struct one {
char a;
char b;
};
struct two {
struct one c;
struct one d;
};
void firstfunction(void *source, void *dest, int size)
{
//memcpy(dest,source,size)
}
void secondfunction(struct two *onedata)
{
struct two twodata;
firstfunction((void *)onedata->c,(void *)&twodata.c,2);
}
void main()
{
struct two onedata;
secondfunction(&onedata);
}
作爲一個方面說明,它通常被認爲是不好的形式來做'void main()'而不是'int main()' – theKunz
不要在沒有需要的情況下使用void *。並且不要向'void *'投射或從'void *'投射。 – Olaf