3

Win32 APIsすべての戻り値をチェックする必要がありますか? たとえばAdjustWindowRectSetWindowLongGetWindowLongなどの関数は実際に失敗する (内部エラーが発生する) 可能性がありますか? または戻り値はほとんどの場合、間違った引数を入力しないというフェールセーフ メカニズムですか?

4

1 に答える 1

2

POSIXとは異なり、Win32 APIは、すべての呼び出しのエラー条件の適切なリストを提供しないようです。一部の関数は実際には失敗することはありませんが(悪い引数の場合を除く)、理論的には失敗する可能性があります。ユーザー入力を信頼してはならないのと同じように、文書化が不十分なライブラリを盲目的に信頼してはなりません。

APIを処理する最良の方法は、すべての呼び出しを関数でラップしてエラーチェック(API間およびAPI内で大きく異なる)を実行することです。これにより、すべての特性が解決される一種の「高レベル」APIが得られます。アウト。次に、成功、エラー、および警告を、言語に適した手法(例外、エラー/警告コールバック、合計タイプなど)に変換できます。

于 2013-01-23T17:33:03.027 に答える