.hファイルのNSString定数を.mで定義しようとしています。という事は承知しています
.hの extern NSString * const variableName;
NSString * const variableName = @"variableValue";
はこれを行う方法です。 cチュートリアルを調べると、const
が変数定義の前にあることになっていることがわかります。私の質問は、それが.hではextern const NSString * variableName;
として、.mではconst NSString * variableName = @"variableValue";
として宣言されていない理由です。 「methodNameの引数1を渡す:ポインタターゲットタイプから修飾子を破棄する」というコンパイラの警告が発生するため、これが機能しないことはわかっています。これは何を意味するのでしょうか?
それは同じではありません。 const修飾子は、値または値へのポインターに適用できます。
int * const
整数への定数ポインター(変更不可)(その値は変更可能)
const int *
定数整数への変更可能なポインター(その値は変更できません)
だからあなたは想像することができます:
const int * const;
定数ポインタは定数へのポインタではありません。定数ポインターは、ポインターが定数であることを意味します。例えば。定数ポインタint * const ptr2;
は、ptr2
が定数のポインタであることを示します。これは、ptr2
が別の整数を指すようにすることができないことを意味します。ただし、ptr2
が指す整数は変更できます。
一方、定数const int * ptr1;
へのポインターは、ptr1
が定数整数を指すポインターであることを示します。整数は一定であり、変更できません。ただし、ポインタptr1
は、他の整数を指すようにすることができます。