簡體   English   中英

檢測從void *到錯誤指針類型的轉換

[英]detect casting from void * to the wrong pointer type

例如:

int *k;
void* c=(void*)&k;
char* x=(char*)c;//outputs a warning or an error
int *g=(int *)c;//compiles successfully(without warnings)

int *gg = malloc(sizeof(int)); //compiles successfully(without warnings)

gcc或任何其他編譯器有可能實現這一目標嗎?

最簡潔的答案是不。 一旦將指針轉換為void* ,您將丟失所有類型信息。

假設您將void*傳遞給另一個翻譯單元中的函數。 編譯其他翻譯單元時,編譯器無法驗證使用該指針所做的任何操作的語義。

如果您希望編譯器強制使用強類型,請不要使用void*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM