基礎知識 | 每日一練(177)

  • 2019 年 11 月 14 日
  • 筆記

讀者:assert() 是什麼?怎樣用它?

小林:這是個定義在 <assert.h> 中的宏, 用來測試斷言。一個斷言本質上是寫下程式設計師的假設, 如果假設被違反, 那表明有個嚴重的程式錯誤。例如, 一個假設只接受非空指針的函數, 可以寫:assert(p != NULL);一個失敗的斷言會中斷程式。斷言不應該用來捕捉意料中的錯誤, 例如malloc() 或 fopen() 的失敗。

讀者:怎樣從 C 中調用 FORTRAN (C++, BASIC, Pascal, Ada,LISP) 的函數?反之亦然?

小林:這完全依賴於機器以及使用的各個編譯器的特別調用順序, 有可能完全做不到。仔細閱讀編譯器的文檔, 有些時候有個 「混合語言編程指南」, 儘管傳遞參數以及保證正確的運行啟動的技巧通常很晦澀難懂。C++ 中, 外部函數說明的 「C」 修改量表明函數應該按 C 的調用約定使用。