1

関数パラメータの評価を防ぐことは可能ですか? ある状況で関数パラメーターを評価したくないので。

たとえば、デバッグ メッセージをログに記録するには、

void log(int severity, ...);

メッセージを記録したい

log(DEBUG, "%s", getErrorMsg().c_str());

重大度が DEBUG の場合、ログ機能はリリース バイナリで返されるだけです。したがって、getErrorMsg(); を評価する必要はありません。

4

2 に答える 2

1

マクロを使用できます。

#define log(severity, ...) if (severity!=DEBUG) log_impl(severity,__VA_ARGS__);
于 2012-08-24T09:37:34.070 に答える
1

関数に渡すパラメータは、関数に入る直前に常に評価されます。

おそらくポインターのようなものを渡したいので、ポインター自体が評価されるものであり、必要な場合にのみそのポインターを介して関数を呼び出します。

于 2012-08-24T05:50:54.083 に答える