定数式

イニシャライザでは、以下に示すような拡張定数式がサポートされています。以下の例では、デフォルト、--strict_warnings、および --strict の各コンパイラモードの動作を示します。

Show/hide例 1 :変数のアドレスの代入

コードには、変数のアドレスをファイルの有効範囲内で代入する定数式が含まれている場合があります。以下に例を示します。

int i;
int j = (int)&i; /* ISO では不可 */

上記のコードを C 用にコンパイルすると、以下の動作が発生します。

  • デフォルトモードでは、警告が生成されます。

  • --strict_warnings モードでは、警告が生成されます。

  • --strict モードでは、エラーが生成されます。

Show/hide例 2:定数値のイニシャライザ

Table 7 は、ARM Compilation Tools の動作と ISO C 標準を比較したものです。

--strict では無効なサンプルソースコードでも、--strict ではなく --strict_warnings でコンパイルすると有効になります。--strict のエラーメッセージは警告メッセージにダウングレードされます。

Table 7. 定数値のイニシャライザの動作(ISO 標準 C との比較)

サンプルソースコードISO C 標準ARM Compilation Tools
--strict モード厳密モード以外
extern int const c = 10;
有効有効有効
extern int const x = c + 10;
無効無効有効
static int y = c + 10;
無効無効有効
static int const z = c + 10;
無効無効有効
extern int *const cp = (int*)0x100;
有効有効有効
extern int *const xp = cp + 0x100;
無効無効有効
static int *yp = cp + 0x100;
無効無効有効
static int *const zp = cp + 0x100;
無効無効有効

Show/hide関連項目

Copyright © 2010 ARM. All rights reserved.ARM DUI 0491BJ
Non-ConfidentialID011811