
1. 일반 규정 1.7 피해야할 키워드 규정 키워드 auto는 사용할 수 없습니다. 키워드 register는 사용할 수 없습니다. 키워드 goto는 사용하지 않는 것이 좋습니다. goto를 사용할 경우 동일한 블록내에서 이후에 선언된 레이블로만 점프합니다. 키워드 continue는 사용하지 않는 것이 좋습니다. 이유 키워드 auto는 C 언어의 불필요한 과거 기능입니다. 키워드 register는 프로그래머가 컴파일러보다 더 똑똑하다고 가정하고 있습니다. 현대 프로그래밍 관행에서 이러한 키워드를 사용해야 하는 설득력있는 이유는 없습니다. 키워드 goto와 continue는 C 언어에서 계속 사용되지만, 사용하면 코드가 엉망진창이 되는 경우가 많습니다. 특히, 구조적 프로그램의 일상적인 흐름제어에 반하는 점..

1. 일반 규정 1.6 캐스트 규정 캐스트를 사용하는 코드에서 가능한 값의 범위에 걸쳐 적절한 동작을 보장하는 방법을 설명하는 주석을 달아야 합니다. 예시 int abs (int arg) { return ((arg < 0) ? -arg : arg); } ... uint16_t sample = adc_read(ADC_CHANNEL_1); result = abs((int) sample); // WARNING: 32-bit int assumed. 이유 캐스트는 위험합니다. 위의 예제에서 부호없는 16비트 "sample" 변수는 부호가 있는 16비트 정수보다 큰 양의 값을 가질 수 있습니다. 이 경우 절대값도 부정확하게 됩니다. 따라서 int 형이 ISO C 표준에서의 16비트라면 오버플로우가 발생할 수 있습니..

1. 일반 규정 1.5 일반 약어 규정 약어와 두문자어는 공학계에서 그 의미가 광범위하고 일관되게 이해되지 않는 한 일반적으로 피해야 합니다. 프로젝트별 약어 및 두문자어 표는 버전 관리 문서에 표시되어야 합니다. 예시 Abbreviation Meaning adc analog to digial converter avg average b_ Boolean buf buffer cfg configuration curr current (item in a list) dac digital to analog converter ee EEPROM err error g_ global gpio general purpose IO pins h_ handle (to) init initialize io input / ouput is..

1. 일반 규정 1.4 괄호 규정 유지관리자에게는 명확해 보이지 않을 수 있으므로, C 언어 자체의 우선 순위 규칙에 의존하지 말고, 실행 순서를 분명히 하기위해 괄호를 사용해야 한다. (또는 길이가 긴 실행문은 몇 줄에 나눠 코딩한다.) 단일 식별자 또는 상수가 아닌 한, 논리 연산자 AND(&&) 및 OR(||)의 피연산자에는 괄호를 사용해야 한다. 예시 if ((depth_in_cm > 0) && (depth_in_cm < MAX_DEPTH)) { depth_in_ft = convert_depth_to_ft(depth_in_cm); } 이유 C 언어의 구문에는 많은 연산자가 있습니다. 어떤 연산자를 먼저 계산해야 하는지 결정하는 우선 순위 규칙은 12개 이상의 우선 순위 레벨이 있을 정도로 복잡하며..

1. 일반 규정 1.3 중괄호 규정 중괄호는 항상 if, else, switch, while, do, for 다음에 나오는 코드 블록(복합문)을 둘러싸야 합니다. 이들 키워드 다음의 단문이나 빈 문장도 중괄호로 둘러싸야 합니다. 왼쪽 중괄호({)는 시작 키워드 아래줄에 사용해야 한다. 오른쪽 중괄호(})는 파일 뒷부분, 왼쪽 중괄호와 동일한 위치에 표시하여야 한다. 예시 { if (depth_in_ft > 10) dive_stage = DIVE_DEEP; // This is legal... else if (depth_in_ft > 0) dive_stage = DIVE_SHALLOW; // ... as is this. else { // But using braces is always safer. dive_..

1. 일반 규정 1.2 코드 길이 규정 프로그램에서 코드 한 줄의 길이는 최대 80자를 넘어서는 안된다. 추론 수시로 동료끼리의 리뷰 및 기타 코드 검사를 수행하게 되는데, 인쇄된 페이지에서 수행합니다. 이러한 인쇄물을 사용하려면 주의를 산만하게 하는 줄바꿈 뿐 아니라 누락된 문자(즉, 오른쪽 여백을 넘어서는 글자)가 없어야 합니다. 코드 길이 규칙을 준수하면 화면상에서도 나란하게 코드 차이점을 쉽게 구별할 수 있습니다. 시행 이 규칙에 대한 위반은 빌드 중 자동화된 스캔을 통해 감지될 수 있습니다.

1. 일반 규정 1.1 C 언어 버전 규정 모든 프로그램은 ISO C 표준인 C99 버전을 준수하도록 작성해야 한다. C++ 컴파일러를 이용할 때에도 선택한 ISO C 버전의 표준에 맞게 컴파일러 옵션을 설정해 주어야 한다. #pragma 같은 확장 키워드와 인라인 어셈블리어는 되도록 적게 사용하여야 하며, 하드웨어에 직접적으로 연결되는 소수의 장치 드라이버 모듈로 사용이 국한되어야 한다. 전처리기 지시자 #define은 키워드의 이름을 바꾸는 데 사용되어서는 안 된다. 예시 #define begin {// Don’t do something like this... #define end } // ... nor this. ... for (int row = 0; row < MAX_ROWS; row++) beg..
실시간 동작을 보장하는 방법 시스템이 의도한 대로 작동하도록 보장하는 가장 쉬운 방법 중 하나는 요구사항을 충족하면서도 가능한 단순함을 유지하는 것입니다. 이것은 단순하게 할 수 있는 일을 복잡하게 처리하고 싶은 충동에 저항하는 것을 의미합니다. 토스터기로 빵 한 조각을 굽기 위한 것이라면, 그 위에 디스플레이 장치를 달거나 여러분에게 날씨 정보를 알려주도록 만들지는 마세요. 단지 빵을 굽기위해 적절한 시간동안 전열선을 켜도록 하세요. 이 간단한 작업은 수 년 동안 코드나 프로그래밍 가능한 장치 없이도 잘 수행되어 왔습니다. 프로그래머로서 문제에 마주치게 되면 우리는 바로 MCU의 소스 코드를 수정하려는 경향이 있습니다. 그러나 제품의 일부 기능(특히 전기 기계 구성품이 있는 제품의 경우)은 코드 없이도..