對於delete
應用於指向未完成類型的指針的情況,Visual C++有C4150 warning。刪除不完整的類型是不是C++中的錯誤時是否存在真實生活案例?
根據標準,此類情況會產生未定義的行爲。在Visual C++中的AFAIK,它們導致默認的operator delete()
函數,並且沒有調用析構函數,它允許有許多錯誤。
現在我可以在Visual C++中使用#prarma warning(error : 4150)
來將該警告視爲錯誤。我想這是爲什麼它是一個警告,而不是默認情況下在Visual C++中的錯誤的原因。
在哪些現實生活中,我想允許這種情況?爲什麼我不會將該警告切換爲編譯器錯誤?
'void'算作不完整類型嗎?如果是,[this](http://stackoverflow.com/questions/6172232/is-it-undefined-behaviour-to-delete-a-null-void-pointer)可能是相關的。 :) – Xeo
你永遠無法知道微軟對他們的產品意味着什麼。 – Dani
也許是一個瑣碎的析構函數? –