私はこの警告を受けています:
note: expected ‘const char **’ but argument is of type ‘char **’
今のところ、引数を にキャストして渡していますconst char **
。それを取り除くことができる他の方法はありますか?
編集:私も間違った質問に答えました。私の答えはまったく関係ありません!私を無視してください。
編集2:紳士の質問者が彼の質問を明確にした後、私の答えが実際に関連していることがわかりました. C'est la vie.
これは C の楽しい部分であり、十分によく考えれば理解できます。
基本的に、変換:
char** ptr;
const char** const_ptr;
const_ptr = ptr; // <-- BAD!
許可されていません。
なぜ、あなたは尋ねるかもしれませんか?「私は物事をよりconst にしています!これは明らかに良いことです!」
さて、これについて考えてみてください。それが許可された場合、次のようになります。
const char c = 'A';
char* ptr;
const char** const_ptr = &ptr; // <-- ILLEGAL, but what if this were legal?
*const_ptr = &c;
*ptr = 'B'; // <- you just assigned to "const char c" above.
BAM、あなたは死んでいます。だから...いいえ:-)
警告は、呼び出している関数が指定されたパラメーターを期待しているが、パラメーターconst char**
を渡していることを示していchar**
ます。この警告を取り除くには、次のことができます
const char**
const char**
(現在行っているように)char**