C言語に関する質問です。

コンパイル時に式を評価して、評価式がfalseの場合に任意のメッセージをコンパイル結果として出す方法を教えてください。

■やりたい事

#define AAA 10

#if (AAA > 9)
//AAAが大きすぎます。 (と、コンパイル時に出したい)
#endif

回答の条件
  • 1人2回まで
  • 登録:2006/12/20 00:05:45
  • 終了:2006/12/20 23:42:12

ベストアンサー

id:herbest_an No.3

herbest_an回答回数28ベストアンサー獲得回数22006/12/20 00:45:06

ポイント26pt

#define AAA10

#if (AAA > 9)

#warning 大きすぎます

//#error 大きすぎます(コンパイルしない)

#endif

/*

「#warning」か「#error」を使えば出来そうです。

#errorの場合はその場で中止します。

*/

その他の回答(2件)

id:tobeoscontinue No.1

tobeoscontinue回答回数214ベストアンサー獲得回数542006/12/20 00:57:09

ポイント27pt

#errorだと思います


#define AAA 10

#if (AAA > 9)
  #error "AAAが大きすぎます。"
#endif

#if (AAA > 9)
  #error "だから大きいんだってば。"
#endif

最初で終わる(止まる)と思ったのですが、全部するみたいです。

リターンコードは1になります。

id:garyo No.2

garyo回答回数1782ベストアンサー獲得回数962006/12/20 00:39:08

ポイント27pt

errorコマンドを使うといいと思いますよ。

http://www.cppll.jp/cppreference/preproc_details.html#error

 #error
文法:

  #error メッセージ

#errorコマンドはコンパイラの処理を止める。
コンパイラが#errorコマンドを読み込んだら、行番号と理由としてメッセージ を表示する。
このコマンドはデバッグ用にもっとも使用される。 
id:herbest_an No.3

herbest_an回答回数28ベストアンサー獲得回数22006/12/20 00:45:06ここでベストアンサー

ポイント26pt

#define AAA10

#if (AAA > 9)

#warning 大きすぎます

//#error 大きすぎます(コンパイルしない)

#endif

/*

「#warning」か「#error」を使えば出来そうです。

#errorの場合はその場で中止します。

*/

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません