1

Solaris Studio は、最も不可解なエラー メッセージを生成しています。

158 char* inbufptr = buffer;
159 char* outbufptr = outbuf;
160 
161 const char** inbufptrpos = &inbufptr;

エラーメッセージは次のとおりです。

161 行目: エラー: char** を使用して const char** を初期化することはできません。

constnessを追加することが問題になるのはなぜですか? 行き詰まっています、助けてください...


 memory: [m y _ c h a r _ a r r a y | inbufptr | inbufptr_pos]
          ^                           ^
          | (1)                       | (2)
          inbufptr                    inbufptrpos

ポインター char* inbufptr は配列の先頭を指し、何かを一定に保つことを約束しません。

ポインター char const **inbufptr_pos がある場合、この型は配列の内容を変更しないことを約束しますが、ポインターが指す場所を変更することはできます。私がそうしても、配列は変更されておらず、問題はありません。

4

2 に答える 2

-1

これが合法であったと仮定します。

char* inbufptr = buffer;

const char** inpufptrpos = &inbufptr;

を変更できるようになりましinbufptrinpufptrposconst、 であるため、変更しないでください。これはあまり意味がないことがわかります。const尊重されていないようです!

この回答の助けを借りて、これが役に立てば幸いです! :)

于 2014-12-31T16:09:38.143 に答える