プロが教える店舗&オフィスのセキュリティ対策術

Microsoft Visual C++ 5.0を使っています。
いつもLINUXでCのコンパイルをしているのですが、Win上でコンパイルすると
「error C2057: 定数式が必要です。」
とでます。
このエラーの指し示すのは、

double x[N];

というような配列の宣言のようです。
ちなみにNは、ヘッダーに

const int N = 2;

と定義しています。
このエラーを出さなくするにはどうしたら良いでしょうか。
ご回答をよろしくお願いします。

A 回答 (2件)

言葉が足りなかった様に思いましたので補足です。


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

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

お礼日時:2001/08/29 16:00

Cとしてコンパイルするのならdefineを用いるのが適切かもしれません。


constを定数として扱うのはC++の流儀だった様な気がします。
で、配列の宣言時には要素数は定数で指定しなければいけないよ、と言われているのではないでしょうか。
とりあえず

#define N 2

に変更するというのは駄目ですか?

#VC++のオプション設定の中にコンパイルルールをある程度変更できる部分が
#あったような気がするのですが・・・。
#記憶違いかも・・・。(^_^;
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!