[英]Cast result of malloc in c library
我正在查看是否要強制轉換malloc的結果? 似乎您不應該將結果轉換為純C代碼,因為它可能會隱藏錯誤並且是多余的。 但是我也看到有人說c ++需要強制轉換,所以所有c庫都應該強制轉換malloc的結果,因為它們實際上可以在c ++項目中使用嗎?
似乎您不應該將結果強制轉換為純C代碼,因為它可能會隱藏錯誤並且是多余的
那是對的。
並非所有的c庫都強制轉換malloc的結果,因為它們實際上可以在c ++項目中使用?
不可以。AC庫可以在C ++項目中使用,但仍可以編譯為C。
否。如果是C代碼,則應將其編譯為C,而不是C ++,因此編譯器將允許從void*
隱式轉換為其他指針。
只有在C ++代碼中使用malloc
時,您才需要對其進行強制轉換-並且在我看來,這是“難聞的氣味”-換句話說,這表明該代碼應進行現代化處理以使用new
或vector
或類似的東西。 (當然,這樣做有充分的理由-例如,您可能有1萬行有用的代碼,您需要使用C ++框架進行其他操作-但通常,最好的方法是編寫一些C ++與那10k行接口的綁定,並繼續將其編譯為C)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.