3.4.1. 상수 식

확장된 상수 식이 이니셜라이저에서 지원됩니다. 다음 예제는 기본값인 --strict_warnings--strict 컴파일러 모드에 대한 컴파일러의 동작을 보여 줍니다.

예제 1, 변수 주소 할당

코드에는 파일 범위에서 변수의 주소를 할당하는 상수 식을 포함할 수 있습니다. 예를 들면 다음과 같습니다.

int i;
int j = (int)&i; /* but not allowed by ISO */

C에 대해 컴파일할 경우 다음과 같은 동작이 발생합니다.

  • 기본 모드에서는 경고가 발생합니다.

  • --strict_warnings 모드에서는 경고가 발생합니다.

  • --strict 모드에서는 오류가 발생합니다.

예제 2, 상수 값 이니셜라이저

다음 예제에는 C 코드에 상수 값이 포함된 식을 사용할 경우의 컴파일러 동작이 요약되어 있습니다.

                                      /*  Std    RVCT v3.1  */
extern int  const c = 10;             /*  ok        ok      */
extern int  const x = c + 10;         /* error      ext     */
static int        y = c + 10;         /* error      ext     */
static int  const z = c + 10;         /* error      ext     */
extern int *const cp = (int*)0x100;   /*  ok        ok      */
extern int *const xp = cp + 0x100;    /* error      ext     */
static int *      yp = cp + 0x100;    /* error      ext     */
static int *const zp = cp + 0x100;    /* error      ext     */

ISO C 표준(Std)에 정의된 동작과 RVCT의 동작으로 구분되어 있습니다.

  • ok는 문이 모든 C 모드에서 허용된다는 것을 의미합니다.

  • ext는 ISO C 표준의 확장입니다. 이 동작은 C를 컴파일할 때 사용되는 엄격한 모드에 따라 다릅니다.

    엄격하지 않음

    허용됨, 경고 없음

    --strict_warnings

    허용됨, 경고 있음

    --strict

    ISO C 표준 준수, 오류 발생

추가 참고

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0348AK
Non-Confidential