斷言 錯誤處理與資料對齊

2022-09-22 02:15:11 字數 1097 閱讀 8478

斷言是一種可用於判斷程式設計或執行是否符合開發者預期的邏輯判斷式,通常用於進行**除錯,詳細資訊見文件。

斷言分為靜態斷言和執行時斷言,前者在編譯時進行處理,後者在執行過程中進行處理。

靜態斷言主要用來約束程式在編譯時需要滿足的一定要求,使用函式為 static_assert,比如檢查計算結果和程式的編譯要求

執行時斷言可以在執行過程中,判斷一些支援程式正常執行的假設性條件是否滿足,使用 assert 函式,當巨集 ndebug 被定義時,assert 失效。比如檢查輸入引數

在 c 語言中,名為 errno 的預處理巨集會被展開為乙個 int 型別的可修改全域性左值,使用者可以對該值進行賦值操作。

在預設情況下, errno 的值為 0 ,在程式的執行過程中,不斷呼叫各種標準庫函式,當某個函式的執行產生了不符合預期的結果時,會修改 errno 的值,來傳遞錯誤資訊。如下圖所示:

errno 可以通過strerror函式得到錯誤對應的文字。

c 語言為 errno 新增了本地屬性,在不同執行緒中,都有其專用的 errno 存放錯誤標識值。

預設情況下,編譯器會採用自然對齊,來約束資料在記憶體中的起始位置。但也可以用關鍵字 _alignas ,來根據自身需求為資料指定特殊的對齊要求,對應的函式是 alignas。alignof 函式可以檢視變數需要滿足的對齊方式,展開後是關鍵字 _alignof。

合理運用自定義對齊方式,可以我們可以優化程式在某些情況下的執行時效能,具體應用參考c 程式效能優化。

PDO錯誤與錯誤處理

pdo錯誤處理的三種模式 引用 1.pdo errmode silent 此為預設模式。pdo 將只簡單地設定錯誤碼,可使用 pdo errorcode 和 pdo errorinfo 方法來檢查語句和資料庫物件。如果錯誤是由於對語句物件的呼叫而產生的,那麼可以呼叫那個物件的 pdostatemen...

MySql錯誤處理 錯誤處理的例子

有幾種錯誤處理的宣告形式 如果任何錯誤 不是 not found 設定 l error 為 1 後繼續執行 declare continue handler for sqlexception set l error 1 如果發生任何錯誤 不是 not found 執行 rollback和產生一條錯誤...

golang 錯誤處理與異常

golang 中的錯誤處理的哲學和 c 語言一樣,函式通過返回錯誤型別 error 或者 bool 型別 不需要區分多種錯誤狀態時 表明函式的執行結果,呼叫檢查返回的錯誤型別值是否是 nil 來判斷呼叫結果。golang 中內建的錯誤型別 error 是乙個介面型別,自定義的錯誤型別也必須實現為 e...