assert() 関数は、エラーとエラーが発生した場所を出力できますが、関数も中止します。
中止せずに assert() 関数が必要です。エラー、エラーが発生したファイルの名前などを出力したいだけです。
C にそのような API またはソース スニペットはありますか?
ありがとう!
まず、アサートとは何かを見てみましょう
ドキュメントによると
assert() はマクロとして実装されています
そして、このような assert の実際の実装を見てみましょう
((x = 0) ? (void) (0) : __assert_fail ("x = 0", "t.c", 9, __PRETTY_FUNCTION__));
あなたの場合、以下の式は必要ないかもしれません
__assert_fail ("x = 0", "t.c", 9, __PRETTY_FUNCTION__))
今ここで私たちにできることは
このようなもの
#define MY_ASSERT(expr) \
(expr ? (void) (0) : printf("something"));
int main(int argc, char *argv[]){
MY_ASSERT(argc == 0)
}
お役に立てれば
したがって、私がこれを正しく読んでいる場合、あなたの質問は基本的に「ファイル名と行番号を出力するにはどうすればよいですか?」です。
シンプル、使用
__FILE__, __LINE__
必要に応じて、次のような独自のマクロを作成します
#define MY_ASSERT(x) if(x) printf("Assertion! Line: %d File: %s \n", __LINE__, __FILE__)
他にも便利な定義済みマクロがあります。http://gcc.gnu.org/onlinedocs/gcc-3.1/cpp/Standard-Predefined-Macros.html