好吧,這已經變得讓我感到困惑。我只是不知道什麼是錯的這個任務:你如何將空指針轉換爲C中的字符指針?
void *pa; void *pb;
char *ptemp; char *ptemp2;
ptemp = (char *)pa;
ptemp2 = (char *)pb;
誰能告訴我爲什麼我收到此錯誤:
error: invalid conversion from ‘void*’ to ‘char*’
好吧,這已經變得讓我感到困惑。我只是不知道什麼是錯的這個任務:你如何將空指針轉換爲C中的字符指針?
void *pa; void *pb;
char *ptemp; char *ptemp2;
ptemp = (char *)pa;
ptemp2 = (char *)pb;
誰能告訴我爲什麼我收到此錯誤:
error: invalid conversion from ‘void*’ to ‘char*’
實際上,必須有什麼問題你的編譯器(或者你還沒有講完整個故事)。將void*
改爲char*
是完全合法的。此外,轉換爲隱含在C(不像C++),也就是,以下應編譯以及
char* pChar;
void* pVoid;
pChar = (char*)pVoid; //OK in both C and C++
pChar = pVoid; //OK in C, convertion is implicit
我正在使用g ++編譯器,並且我已經編譯了windows visuall C++上的代碼,但沒有問題,但是使用g ++我得到這個錯誤 – Jimmy
此代碼不會產生任何錯誤(假設正確的上下文)。這些轉換沒有任何無效。像這樣的錯誤通常是在C++中爲'ptemp = pa'賦值而產生的(即沒有強制轉換,C++編譯器)。您聲稱正在使用C編譯器,並且您在那裏有明確的轉換。你的情況不會有這樣的錯誤。請發佈真實的代碼。 – AnT
什麼編譯器?它是C編譯器,而不是C++編譯器?現在,你擁有的是合法的C,並且在C99標準模式下沒有任何問題將通過'gcc'。 –
現在,這是一個奇怪的錯誤消息... –