__u64의 경우 types.h를 include 하면 인식하지 못하며
long long int의 경우 gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 에서 기본적으로 인식한다.
OS가 64bit 이냐 아니냐와는 별개로 작동에는 문제가 없는듯 하기도 하고?
(현재 32bit 우분투라 아예 안될줄 알았는데 sizeof를 통해서는 크기를 돌려주기는 함)
아무튼 실험을 해보니 long long int 만 64bit(8byte)로 설정된다.
long
int
long int
long long int / __u64 / uint64_t / int64_t
$ cat /usr/include/linux/types.h
$ cat /usr/include/limits.h
long long int의 경우 gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 에서 기본적으로 인식한다.
OS가 64bit 이냐 아니냐와는 별개로 작동에는 문제가 없는듯 하기도 하고?
(현재 32bit 우분투라 아예 안될줄 알았는데 sizeof를 통해서는 크기를 돌려주기는 함)
아무튼 실험을 해보니 long long int 만 64bit(8byte)로 설정된다.
long
int
long int
long long int / __u64 / uint64_t / int64_t
$ cat /usr/include/linux/types.h
typedef __u16 __bitwise __le16; typedef __u16 __bitwise __be16; typedef __u32 __bitwise __le32; typedef __u32 __bitwise __be32; typedef __u64 __bitwise __le64; typedef __u64 __bitwise __be64; typedef __u16 __bitwise __sum16; typedef __u32 __bitwise __wsum; |
$ cat /usr/include/limits.h
/* Minimum and maximum values a `signed int' can hold. */ # define INT_MIN (-INT_MAX - 1) # define INT_MAX 2147483647 /* Maximum value an `unsigned int' can hold. (Minimum is 0.) */ # define UINT_MAX 4294967295U /* Minimum and maximum values a `signed long int' can hold. */ # if __WORDSIZE == 64 # define LONG_MAX 9223372036854775807L # else # define LONG_MAX 2147483647L # endif # define LONG_MIN (-LONG_MAX - 1L) /* Maximum value an `unsigned long int' can hold. (Minimum is 0.) */ # if __WORDSIZE == 64 # define ULONG_MAX 18446744073709551615UL # else # define ULONG_MAX 4294967295UL # endif # 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 */ |
$ cat /usr/include/stdint.h
/* There is some amount of overlap with sys/types.h as known by inet code */ #ifndef __int8_t_defined # define __int8_t_defined typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; # if __WORDSIZE == 64 typedef long int int64_t; # else __extension__ typedef long long int int64_t; # endif #endif /* Unsigned. */ typedef unsigned char uint8_t; typedef unsigned short int uint16_t; #ifndef __uint32_t_defined typedef unsigned int uint32_t; # define __uint32_t_defined #endif #if __WORDSIZE == 64 typedef unsigned long int uint64_t; #else __extension__ typedef unsigned long long int uint64_t; #endif |
'프로그램 사용 > gcc' 카테고리의 다른 글
크기가 0인 배열 허용 (0) | 2015.06.29 |
---|---|
ubuntu gcc가 바보 (2) | 2013.09.19 |
GCC 기본 include 경로(default include path on GCC/G++) (0) | 2012.02.12 |
gcc의 2진수 표기법 (0) | 2011.12.28 |
c++ 컴파일 오류 - error: extra qualification (0) | 2011.10.12 |