オブジェクト属性
このセクションの内容:
オブジェクト属性は通常、関数やデータオブジェクトの内部機能に影響しますが、関数の呼び出し方法やデータのアクセス方法には直接影響しません。したがって、通常はオブジェクトの宣言でオブジェクト属性を指定する必要はありません。
以下のオブジェクト属性を指定できます。
変数に使用可能なオブジェクト属性:
__absolute、__no_alloc、__no_alloc16、__no_alloc_str、__no_alloc_str16、__no_init、__ro_placement関数や変数に使用可能なオブジェクト属性:
location、@、__root、__weak関数に使用可能なオブジェクト属性:
__cmse_nonsecure_entry、__intrinsic、__naked、__nested、__noreturn、__ramfunc、__stackless
特定の関数やデータオブジェクトに対して、必要な数のオブジェクト属性を指定できます。
location および @の詳細については、データと関数のメモリ配置制御を参照してください。
オブジェクト属性の構文
オブジェクト属性は、型の前に記述する必要があります。たとえば、起動時に初期化されないメモリにmyarrayを配置するには、以下のように記述します。
__no_init int myarray[10];
#pragmaobject_attributeディレクティブも使用できます。以下の宣言は、前の例と同一の結果になります。
#pragma object_attribute=__no_init int myarray[10];
注記
オブジェクト属性は、typedefキーワードと併用できません。