メッセージが表示された後にプログラムが終了する可能性があるため、エラーメッセージを表示する汎用関数を作成しようとしています。
エラーが発生したソースファイルと行を表示する関数が必要です。
引数リスト:
1.char *desc //description of the error
2.char *file_name //source file from which the function has been called
3.u_int line //line at which the function has been called
4.bool bexit=false //true if the program should exit after displaying the error
5.int code=0 //exit code
(4) と (5) のため、関数定義でデフォルトの引数を使用する必要があります。プログラムが終了しない限り、引数を指定したくないからです。
(2) と (3) のため、次のような生の関数にリダイレクトするマクロを使用する必要があります。
#define Error(desc, ???) _Error(desc,__FILE,__LINE__, ???)
問題は、これらの 2 つの要素がどのように連携するかがわかりません。
それがどのように見えるべきかの例:
if(!RegisterClassEx(&wndcls))
Error("Failed to register class",true,1); //displays the error and exits with exit code 1
if(!p)
Error("Invalid pointer"); //displays the error and continues