従来の linux c/c++ ソフトウェアで何か問題が発生した場合、魔法の変数 errno があり、何が問題なのかの手がかりが得られます。
しかし、これらのエラーはどこで定義されているのでしょうか?
例を見てみましょう (これは実際には Qt アプリの一部であるため、qDebug() です)。
if (ioctl(file, I2C_SLAVE, address) < 0) {
int err = errno;
qDebug() << __FILE__ << __FUNCTION__ << __LINE__
<< "Can't set address:" << address
<< "Errno:" << err << strerror(err);
....
次のステップは、その errno が何であったかを調べることです。これにより、終了するか、問題について何かを試みるかを決定できます。
したがって、この時点で if または switch を追加します。
if (err == 9)
{
// do something...
}
else
{
//do someting else
}
私の質問は、「9」が表すエラーをどこで見つけるかです。私のコードでは、そのようなマジック ナンバーは好きではありません。
/ありがとう