[問題] 轉型有可能出錯嗎?

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間16年前 (2010/06/30 15:17), 編輯推噓0(0010)
留言10則, 3人參與, 最新討論串1/1
http://nopaste.csie.org/a7b75 請教一下 這種C-Style轉型 我已經非常確定我塞下來是甚麼型態 只是用別的tyep收 要用的時候 在cast回來 這樣做 如果我非常確定 傳來是啥 我要用時我就轉回他原本的type 會不會有什麼問題? 還是說有甚麼風險是這種轉型有可能會遇到的? 因為現在遇到一個問題 發現轉型後 印出值也對但是function還沒return 程式就莫名出錯 exception 改成不轉型 傳來就是WCHAR* 收 就沒事 測試程式也都沒啥問題 只不過現在擺同樣邏輯到大程式 就出錯... 想不出可能會發生問題的點.... 覺得很莫名其妙 謝謝 ps. 如果是cast "值" 有可能會 double => int 失去4byte 當然轉回去會錯 但我現在是指標 會有可能出現甚麼問題嗎??? thx -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.64.222 ※ 編輯: QQ29 來自: 219.87.64.222 (06/30 15:21)

06/30 15:56, , 1F
對 pointer 做 casting 要小心 strict aliasing 規則。
06/30 15:56, 1F

06/30 15:57, , 2F
你這個小程式倒是沒這問題,但「同樣邏輯」的實際 code
06/30 15:57, 2F

06/30 15:57, , 3F
是什麼,我就不得而知了。
06/30 15:57, 3F

06/30 16:16, , 4F
strict aliasing是什麼 我不知道我會去查查~
06/30 16:16, 4F

06/30 16:16, , 5F
不過win32 API不是常常都需要轉型成void*再塞給他嗎
06/30 16:16, 5F

06/30 16:17, , 6F
還是說這void* 例外~還是說 win32 API內有做特別的事
06/30 16:17, 6F

06/30 16:17, , 7F
而不是單純的轉回來??
06/30 16:17, 7F

07/01 01:19, , 8F
....網路上看不懂什麼是strict aliasing....但
07/01 01:19, 8F

07/01 01:19, , 9F
aliasing這個詞好像常聽到....但都不知道啥意思
07/01 01:19, 9F

07/01 09:18, , 10F
把key word丟去google tinlans大大的blog就寫很清楚了說
07/01 09:18, 10F
文章代碼(AID): #1CAkz-xT (C_and_CPP)
文章代碼(AID): #1CAkz-xT (C_and_CPP)