1

このようなものを作ることはできますか?

#define N_VALID "is not a valid ID"  
...  
throw N_valid;  
...  
catch(char *message){  
fprintf(stderr,"%s",message);}  
4

5 に答える 5

1

はい。

#define N_VALID "is not a valid ID" 

throw N_VALID;
throw "is not a valid ID";

上記の下 2 行は、前処理が完了すると、コンパイラの目には文字通り同一です。

于 2013-05-21T17:05:24.433 に答える
0

これは合法ですが、不道徳です。クライアントがエラーを個別に処理できるように、1 回のキャッチで巨大な if ステートメントを使用するのではなく、常にオブジェクトをスローする必要があります。

于 2013-05-21T17:05:01.207 に答える
0

#define ディレクティブは、アプリケーションがコンパイルされる前に、コード内のタグを別のタグに置き換えることによって機能します。したがって、これができる場合:

throw "is not a valid ID";

あなたはこれを行うことができます:

throw N_VALID;
于 2013-05-21T17:05:39.730 に答える
0

それはうまくいくはずです。プリプロセッサはコンパイラの前に実行され、N_VALID を「有効な ID ではありません」に置き換えます。

于 2013-05-21T17:10:36.187 に答える