変数名の長さ制限

[戻る]
ししめ 2005/09/22(木) 17:46:31
ある2つのプロジェクトがあり、
片方では20文字以上の変数を宣言できずに
コンパイルエラーになります。
もう片方では20文字以上も可能であり
どういうことなのかさっぱりわかりません。
どこかにそういう設定がありますか?
都合により変数名の長さをちじめることはできません。
どうかエラーにならない方法をご教授ください。

環境はWinXPでVC6.0です。

ししめ 2005/09/22(木) 17:54:11
[[解決]]
すみません。解決しました。

同じ名前の#defineがあったためエラーになってました。
お騒がせいたしました。

επιστημη [E-Mail] 2005/09/22(木) 17:54:49
> 片方では20文字以上の変数を宣言できずに
> コンパイルエラーになります。

そのエラーを起こすコードとエラーメッセージを呈示してください。
VC6が20文字程度のシンボルを食えないとは考えにくいのです。

επιστημη [E-Mail] 2005/09/22(木) 17:55:30
…… orz

PATIO 2005/09/22(木) 18:08:04
コンパイルエラーと言っても色々あると思いますが、
どんなエラーが出ているのでしょう?
それによって解釈の仕方も変わると思いますけれど。
エラーの内容と言うは大事です。
こういう質問をするときにエラー内容を提示しないのは
質問していないのと同じ事です。

VCのHELPを見てみてください。
C++識別子の項目に以下の記述があります。

Visual C++ の識別子として有効なのは、最初の 247 文字だけです。
コンパイラはユーザー定義型の名前を "装飾" して型情報を保存するので注意が必要です。
つまり、型情報も含めた装飾名の長さを、247 文字以内に収めなくてはなりません。
装飾名については、『Visual C++ プログラマーズ ガイド』の「装飾名」を参照してくだ
さい。装飾された識別子の長さを左右する要因を、次に示します。 

・ユーザー定義型またはユーザー定義型の派生型のオブジェクトを示す識別子であるかどうか
・関数の型または関数の派生型を示す識別子であるかどうか
・関数への引数の数 

上記の内容からいくと装飾名の長さが247文字に収めよとありますから
その変数名だけでは判断できないかもしれません。
とはいえ、エラー内容の提示がないので実際のところは良く分かりませんね。

PATIO 2005/09/22(木) 18:08:35
がーん、せっかく書いたのにぃー。(T-T)

PATIO 2005/09/22(木) 18:10:23
>同じ名前の#defineがあったためエラーになってました。

これならエラー内容を見ればわかりそうな内容ですがねぇ。
あっ、しつこいですか、そうですか。
失礼しました。

ししめ 2005/09/22(木) 19:10:11
どうもすみません。

エラー内容は以下でした。
初心者には難しいエラー内容だと思いますが、
経験者なら一発なんでしょうね。

問題のコード
const DWORD XXX_XXX_XXXXXXX_XXXXXX = 0x1;  // 2092行目

エラー内容
aaa.h(2092) : warning C4091: 空白の宣言が見つかりました。
aaa.h(2092) : error C2143: 構文エラー : ';' が 'constant' の前に必要です。
aaa.h(2092) : fatal error C1004: 予期せぬ EOF が検出されました。

これで1字へらしたらたまたまコンパイルが通ったので
勘違いしてしまいました。

超初心者 2005/09/23(金) 02:24:33
面白!!

古いスレッドには追加発言できません。