C언어에서 아주 중요한 static의 활용을 알아 보도록 하겠습니다. 여러 사람이 함께 작업하는 프로젝트에서는 static을 적절히 사용해야 합니다. static 으로 선언만하고 사용하지 않는 함수나, 변수를 컴파일러에서 warning해주기 때문에 아주 유용합니다. 여러분들도 아시겠지만 컴파일러에서 error를 발생하면 타킷 보드에 프로그램을 로딩할 수가 없습니다. 그러나 warning이 발생하도라도 로딩이 가능하기 때문에 무시하는 경우가 많은데, 이는 런타임시에 에러를 발생 할 수 있으므로 warning도 반드시 없애주는 것이 좋습니다. static은 여러개의 파일내에 해당 파일내의 scope로 동일한 이름의 함수를 각 파일별로 만들 수 있게 해줍니다. 예를 들어 보겠습니다. 여러개의 .c 파일을 만들..
이번 포스팅에서는 각각의 구현은 다르지만 기능은 같은 객체들을 관리하는 Builder 패턴에 대해 알아보겠습니다. 간단하게 예를 들면 사용자측 코드 즉, main 함수에서는 객체를 만들 뿐 기능을 사용하기 위해 기능 함수를 직접 호출하지 않고 관리자를 통해서만 일 처리를 합니다. Key(버튼) 처리하는 예제로 Builder 패턴을 상세히 들여다 보겠습니다. Key를 입력받아 처리하는 식의 기능은 firmware에서는 참 많이 쓰입니다. Key 처리 기능은 하드웨어적으로 참 많이 바뀝니다. 예를 들어 단순 1:1 GPIO를 사용할 수도 있고 ADC를 사용할수도 있으며 혹은 1:N 매트릭스 GPIO를 사용할 수도 있습니다. 아니면 세가지 다 사용할 수도 있겠지요. 주의할 점은 어떠한 하드웨어 Ke..
돌고 도는 구조체를 어떻게 선언해야 할까요? 자기 자신을 포인터하는 구조체를 선언하는 방식이 바로 구조체전방선언이라고 불리우는 불완전 선언입니다. 아래 예제를 보도록 하겠습니다. 먼저 다음과 같이 불완전 선언부터 해야 합니다. typedef struct Activity_ Activity; typedef struct Context_ Context; typedef struct Context_ { bool refreshRequired; Activity *activity; Location *location; Menus *menus; }Context_; typedef void (*OnClickFunction)(Context *context); typedef void (*OnScreenFunction)(Contex..
C언어에서 아주 중요한 static의 활용을 알아 보도록 하겠습니다. 여러 사람이 함께 작업하는 프로젝트에서는 static을 적절히 사용해야 합니다. static 으로 선언한 사용하지 않는 함수나, 전역변수를 컴파일러에서 warning해주기 때문에 아주 유용합니다. 아시겠지만 컴파일러에서 error를 발생하면 타킷 보드에 프로그램을 로딩할 수없습니다. 그러나 warning이 발생하면 로딩이 가능하기 때문에 무시하는 경우가 많은데, 이는 런타임시에 에러를 발생 할 수 있으므로 warning도 없으주는 것이 좋습니다. static은 여러개의 파일내에 해당 파일 scope로 동일한 이름의 함수를 만들 수 있게 해줍니다. 예를 들어 보겠습니다. 여러개의 .c 파일을 만들어 봅시다. Uart.c, Lcd.c, F..
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는..