자바의 Class와 C의 typedef는 많이 비슷해보입니다. 그러나 실제로 좀 차이가 있습니다. 자바 Class는 생산성과 효율성을 높이기 위해, 궁극적으로 객체지향을 목표로 만든 것이기 때문에 typedef보다 훨씬 사용하기 편리합니다. 가장 큰 차이점은 동적인 할당과 해제를 JVM에서 자동으로 해준다는 것이지요. 자바에서는 궁극적으로 Class를 통해 instance를 만들어 냅니다. 자바에서 다음 구문 Class class = new Class(); 는 무엇을 의미할까요? 이것은 class라는 이름의 메모리를 확보한 후 포인터를 넘겨준것과 같은 효과를 냅니다. new와 동시에 memory allocation이 발생한 것입니다. 메모리를 확보했으니 사용 후 반환을 해야 하는데, 자바는 가비지 콜렉션..
C언어에서 typedef 는 새로운 타입(type)을 만드는 키워드입니다. 예를 들어 bool 타입은 true, false를 가지고 있는 기본적인 타입인데, C언어에는 없습니다. typedef를 통해 아래와 같이 간단하게 bool타입을 만들 수 있습니다. typedef enum { false = 0, true = 1 }bool; 그리고 아래와 같이 코딩 할 수 있습니다. bool isRegistered = false; if(isRegistered == true) { printf("It is registered!"); } 좀 더 활용해 보겠습니다. typedef struct { uint8_t D0; uint8_t D1; uint8_t D2; uint8_t D3; }digit_t; 새로운 digit_t라는 ..
수학시험에서 대부분 답이 0 혹은 1인 경우가 많습니다. C언어에서도 이러한 법칙은 어느정도 통용되는 것 같습니다. 코드내에 0과 1이 외의 숫자가 나타나는 경우를 최소화 해야 합니다. 더욱 엄격하게 하자면 코드에서 0 이외의 모든 숫자는 빼는 것이 좋습니다. 그러면 어떻게 숫자를 빼야 할까요? enum에 해답이 있습니다. 아래와 같이 선언하면, 0과 1의 타입의 형태에서는 false와 true만 사용하게 됩니다. typedef enum { false = 0, true = 1 }bool; 위의 typedef enum 사용할 때 주의할 점이 있습니다. 바로 아래와 같이 사용하면 안됩니다. 왜 그럴까요? if(is_exist) //true { //when true, implements } else { //w..
Enum(열거형)은 변수가 아니라 값의 정의입니다. typedef를 해서 사용하면 편리합니다. 우선 #define과 비교하자면, #define zero 0 i = zero; 여기에서 i 에는 0이 할당됩니다. zero가 0으로 치환 됩니다. 말 그대로 문자 바꾸기를 컴파일러에서 해주는 것에 불과합니다. enum과 typedef를 같이 사용해 봅시다. typedef enum { RED, GREEN, PUCE }colors_t; colors_t favorite = PUCE; C언어에는 없는 bool type을 만들 어서 다음과 같이 사용 할 수도 있습니다. typedef enum { false=0, true=1 }bool; bool isTrue = false; 위와 같이 사용하면 false는 0, true는..
첫번째로 typedef에 대해 먼저 살펴보겠습니다. C언어에서 typedef 는 새로운 타입을 만드는 지시어입니다. bool 타입은 true, false를 가지고 있는 기본적인 타입인데, 아쉽게도 C언어 안에는 bool 타입이 없습니다. 다행히도 아래 코드와 같이 typedef를 통해 간단하게 bool타입을 만들 수 있습니다. typedef enum { false = 0, true = 1 }bool; bool isRegistered; isRegistered = false; if(isRegistered == true) { printf("It is registered!"); } 좀 더 활용해 보겠습니다. 아래 예는 네자리 숫자를 네개로 분리하는 새로운 타입입니다. typedef struct { u8 D0; ..