する「静的のconst char型*のポーラ」の割り当てループ私は繰り返し関数を呼び出します。この関数には、ユーザの入力に応じて上記の文字列を指すポインタが含まれています。私はそれがSTRING_Aに設定したいデフォルトでは、そう私は、本質的に持っていることはこれです:C:メインプログラムに続いて</p> <pre><code>static const char * const STRING_A = "STRING A"; static const char * const STRING_B = "STRING B"; </code></pre> <p>:私はこのようなファイルの先頭で定義されたいくつかのグローバル文字列を含むプログラムを持っている「静的のconstのchar *」
私が持っている問題は、コンパイル時に私が得るということです「エラー:初期化子要素が定数ではありません」。これはGCC 4.7.2を使用しています。私が混乱しているのは、入力関数の "static"キーワードを取り除くと、エラーがなくなるということです。しかし、これは解決策ではありません。静的キーワードは、関数がコール間の現在の文字列を追跡するために必要です。
明らかに、いくつかのconst修飾子を取り除くだけで、多くの点でこれを修正できます。しかし、なぜこれが機能していないのか理解したい。
グローバルな文字列変数を異なる文字列を指すように変更することはできず、個々の文字を変更することもできません。 staticキーワードは、ソースファイルに対してローカルになります。
私の関数内の変数current
については、staticキーワードを使用すると関数の複数の呼び出しで値が保持され、この場合のconst修飾子はcurrent
が指す文字列が変更可能であることを意味します。それが指す文字列の文字ではありません。
私はこれらのステートメントに矛盾がないので、なぜコンパイラがエラーを出すのか理解できません。特に、current
の "静的"指定子が削除された場合に問題がない理由を理解できません。
誰かが問題の原因を説明できる場合は、ありがとうございます。
を。 –