2017-01-30 20 views
0

2つの別個の識別子は、その全長に関係なく最初の31文字が異なる必要があります。Cの識別子(31文字)の長さにはどのような制限がありますか?Cの識別子の長さの制限

+2

標準では、現在のアーキテクチャで最小限の共通分母を確保するために、実装には[下限](http://port70.net/~nsz/c/c11/n1570.html#5.2.4.1)のみを置きます。しかし、可能であれば(http://port70.net/~nsz/c/c11/n1570.html#note18)実装をはるかに上回るように[推奨します]。 – StoryTeller

+0

あなたは研究のための公式文書をよく読んでください。 – roottraveller

+0

C99より前の要件はわずか6文字でした。それは楽しい時間のために最小要件を超えていないリンカとの作業 –

答えて

0

この制限は、コンパイラーが変数名に32文字(31 +ヌルターミネーター)を安全に割り当てることができるように内部簿記を簡単にするためです(別の用紙形式では姓の長さに制限があります) 。正確な制限は任意であり、メモリのために十分小さく、プログラマにとっては十分に大きい。

また、一部のシステムではリンクがCコンパイラシステムとは別の手順であり、C言語で記述されていないオブジェクトファイルがリンクされている可能性があるためです。これらは識別子の長さに制限があります。

更新:異なる言語で書かれたいくつかの部分からなる1つのプログラムを作ることができます(例えば、関数が既にFortranで書かれ、メインのCコードから呼び出されている可能性があります)。他の言語では、可変長に異なる制限が課される可能性があります(人工的な例:abcdefabcdef1が同じ機能をFortranコードで参照すると考えられる場合は、Cコードで同じにする必要があります)。姓の例を使ったイラスト:地方自治体は長さの長い言語やローカル言語を処理することができるかもしれませんが、連邦当局の要件はより厳しいかもしれません。

+0

あなたは答えを理解していただきありがとうございます。あなたは識別子の長さに力を制限する方法を詳しく教えてください。 – manasBVSS

+0

それはポストを編集したマルコム・マクリーンの追加でした。私は答えを更新しました。 –