[英]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.