sizeof
-
C언어, enum 타입의 크기는?IT/Linux C 2012. 12. 19.
enum 타입으로 정의된 리스트를 정리하고 있다가, 최대치가 궁금해서 간단한 확인을 해보았다. 변수들은 일반적으로 sizeof를 이용하여 크기를 알아 낼 수 있는데, sizeof(enum)이 안되기 때문에, struct로 enum 타입을 감싸고 sizeof로 크기를 확인해보았다. linux 64bit 그리고 gcc 컴파일러를 사용하였다. #include enum enum_number { ONE, TWO, THREE }; struct enum_struct { enum enum_number num; }; int main(int argc, char* argv[]) { printf("enum:%ld\n",sizeof(struct enum_struct)); return 0; } enum:4 4byte 크기면, e..
-
sizeof 함수의 리턴값은 어떤 타입인가??IT/Linux C 2012. 1. 5.
sizeof함수는 C와 C++에서 데이터 타입의 크기를 바이트 단위로 알아내는 많이들 혹은 흔히들 사용하는 시스템 함수이다. 개발을 하던 중에 sizeof의 결과를 함수의 인자로 받아야하는 경우가 생겼는데, 이때 갑작스렇게 혼란이 온 sizeof 함수의 리턴값은 어떤 타입인가 고민하게 되었다. 사이즈니깐 unsigned int라고 생각했는데, 완벽한 답은 아닌거 같았다. 위키피디아에서 검색해보니, 답은 size_t 이다. 예를 들어, 아래와 같이 데이터와 크기를 인자로 받아 전송하는 함수가 있다고 가정하였을 때, size_t 타입을 인자로 받아서 사용하는 것이 안전하다. int send_somedata(void* data,size_t size); int num=10; send_somedata(&num,s..