system header 화일에 조건적으로 정의된 #define을 사용하려면

granite의 이미지

/usr/include/limits.h에 정의된 LLONG_MAX를 쓰려고 하니 시스템에 __USE_ISOC99가 define 되지 않아 사용을 못하고 있습니다. __USE_ISOC99를 컴파일 할때 -D__USE_ISOC99로 해도 안돼 할수없이 LLONG_MAX를 정의해 쓰고 있는데 이게 다른 시스템으로 갈때 문제가 생길것 같아 찜찜합니다. 예전에도 이런 문제가 있었는데 이런 경우 어떻게 해야 컴파일때 __USE_ISOC99를 define 해줄수 있나요?

#  ifdef __USE_ISOC99

/* Minimum and maximum values a `signed long long int' can hold.  */
#   define LLONG_MAX    9223372036854775807LL
#   define LLONG_MIN    (-LLONG_MAX - 1LL)

/* Maximum value an `unsigned long long int' can hold.  (Minimum is 0.)  */
#   define ULLONG_MAX   18446744073709551615ULL

#  endif /* ISO C99 */
granite의 이미지

컴파일시 -std=c99 옵션를 사용하면 되네요.