0

関数のパラメーターの 1 つをオプションにしたい状況があります。私はそれを達成する方法を知りたかった..?

    int mapgw_cm_trace(int trapLog, char *pcMsgId, ...)

traplogパラメータをオプションにしたい。

または、これを別の方法で見ると、このパラメーターが関数呼び出しで送信されない場合は、このパラメーターをデフォルト値 (1 など) に設定します...そうでない場合は、関数呼び出しで送信された値を使用します。これを達成することは可能ですか..?va_args()を使いたくない

4

2 に答える 2

5

VA リストは多くの理由で良くありませんが、最も顕著なのは、型の安全性が低いことです。それらを避けてください。

C でこれを行う通常の方法は、関数を文書化して、trapLog値が this または that の場合は使用されないことを示すことです。任意の値を持つことが可能であれば、関数を次のように書き換えることができます。

int mapgw_cm_trace (const int* trapLog, char *pcMsgId)

使用しない場合は文書化しtrapLog == NULLます。

于 2013-04-16T06:40:56.090 に答える