• ベストアンサー

定数式とはどういう意味でしょうか。

Microsoft Visual C++ 5.0を使っています。 いつもLINUXでCのコンパイルをしているのですが、Win上でコンパイルすると 「error C2057: 定数式が必要です。」 とでます。 このエラーの指し示すのは、 double x[N]; というような配列の宣言のようです。 ちなみにNは、ヘッダーに const int N = 2; と定義しています。 このエラーを出さなくするにはどうしたら良いでしょうか。 ご回答をよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • natural
  • ベストアンサー率37% (419/1115)
回答No.2

言葉が足りなかった様に思いましたので補足です。 先程の回答の中で述べた、「constを定数として扱うのはC++の流儀」というのはCではconstが使えないと言うことではありません。 ただ、Cの場合constを用いた場合あくまで変更できない変数という扱いになります。(つまり定数式でなければならない配列定義時の要素数等には使えない) これに対しC++ではdefineの機能の置き換えとしてconstを推奨していますので定数として扱われる様になったと言うことです。 同様にマクロによるバグを減らす為inline関数の使用も推奨しています。 C++の流儀としてはdefineはあまり使わない方向ということでしょうか。

lucky111
質問者

お礼

具体的なご回答ありがとうございました。 例のエラーはなくなり、ようやく実行できました。 ちなみに、inline関数を推奨とのことですが、どのように使ったよいのでしょうか。時間がありましたら、お願いします。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • natural
  • ベストアンサー率37% (419/1115)
回答No.1

Cとしてコンパイルするのならdefineを用いるのが適切かもしれません。 constを定数として扱うのはC++の流儀だった様な気がします。 で、配列の宣言時には要素数は定数で指定しなければいけないよ、と言われているのではないでしょうか。 とりあえず #define N 2 に変更するというのは駄目ですか? #VC++のオプション設定の中にコンパイルルールをある程度変更できる部分が #あったような気がするのですが・・・。 #記憶違いかも・・・。(^_^;

すると、全ての回答が全文表示されます。