私はstderrに文字列を書き込みます fprintf(strderr、format strimg、string) 以降他の関数からstderrに何かが書き込まれているかどうかを確認する必要があります。stderrが空であることを確認してください
この問題では、stderrが空であるかどうかを確認するだけでいいですか?あるいは、ferror(stderr)がそのトリックをするでしょうか?
私はstderrに文字列を書き込みます fprintf(strderr、format strimg、string) 以降他の関数からstderrに何かが書き込まれているかどうかを確認する必要があります。stderrが空であることを確認してください
この問題では、stderrが空であるかどうかを確認するだけでいいですか?あるいは、ferror(stderr)がそのトリックをするでしょうか?
エラーが発生したかどうかを追跡するためにブール値フラグを使用する方がよいでしょう - stderrに書き込むたびにfalseに初期化し、trueに設定します。その後
することで、機会があれば、
#include <stdio.h>
#include <stdarg.h>
char errprintf_called = 0;
int errprintf(const char * fmt, ...)
{
errprintf_called = 1;
va_list ap;
va_start(ap, fmt);
int ret = vfprintf(stderr, ap);
va_end(ap);
return ret;
}
を行うとstderrは、任意のポータブルな方法で書き込まれているかどうかをチェックすることができない私の知る限り
errprintf("Error %d has occured!", 42);
if (errprintf_called) {
whine();
} else {
laugh();
}
を使用しています。あなたはstderrへの出力を別の関数に分解し、それが呼び出されるとブール値を設定できませんでしたか? –