問題:
下面的C 程式碼有一個不回傳值的非void 函數:
static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out) { tvec3::Min(a,b,out); out.w = min(a.w,b.w); }
為什麼編譯時沒有錯誤?
答案:
根據C 11 草案標準第6.6.3 節第2 節,此行為未定義,其中規定從a 的末尾流出返回值的函數會導致未定義的行為。
編譯器警告和錯誤:
意義:
未定義的行為可能會導致不可預測的結果,包括程式崩潰。建議使用 -Wall 和 -Wextra 等編譯器選項來偵測和修復未定義行為的實例。
以上是為什麼我的非 Void C 函數不回傳值不會產生編譯器錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!