OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • すぐに回答を!
  • 質問No.125710
  • 閲覧数4233
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 74% (166/222)

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

double x[N];

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

const int N = 2;

と定義しています。
このエラーを出さなくするにはどうしたら良いでしょうか。
ご回答をよろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル13

ベストアンサー率 37% (419/1115)

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

お礼率 74% (166/222)

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

その他の回答 (全1件)

  • 回答No.1
レベル13

ベストアンサー率 37% (419/1115)

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

#define N 2

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

#VC++のオプション設定の中にコンパイルルールをある程度変更できる部分が
#あったような気がするのですが・・・。
#記憶違いかも・・・。(^_^;
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ