티스토리 뷰
반응형
3. 공백 규정
3. 1 공백
규정
- if, while, for, switch, return 키워드와 같은 줄에 추가 표현이 있을 때 각 키워드 뒤에 공백 한 칸이 있어야 합니다.
- 각 할당 연산자 =, +=, -=, *=, /=, %=, &=, |=, ^=, ~=, !=는 항상 앞과 뒤에 공백 한 칸씩 있어야 합니다.
- 각 이항 연산자 +, -, *, /, %, <, <=, >, >=, ==, !=, <<, >>, &, |, ^, &&, ||는 항상 앞과 뒤에 공백 한 칸씩 있어야 합니다.
- 각 단항 연산자 +, -, ++, --, !, ~는 피연산자와 공백 없이 붙어 있어야 합니다.
- 포인터 연산자 * 및 &는 선언문 내에서는 앞뒤로 공백이 있어야하지만, 선언문이 아닌 경우 피연산자와 공백없이 붙어 있어야 합니다.
- 삼항 연산자인 ? 와 : 는 항상 앞뒤에 공백 한 칸씩 있어야 합니다.
- 구조체 포인터 연산자 및 구조체 멤버 연산자(-> 및 .)는 항상 앞뒤에 공백이 없어야 합니다.
- 배열 첨자 연산자(array subscript operator) ([, ])는 다른 화이트 스페이스 규칙에서 요구하는 경우를 제외하고 앞뒤에 공백이 없어야 합니다.
- 괄호 안의 표현식에서는 괄호 옆에 공백이 없어야 합니다.
- 함수 호출시 사용하는 괄호에서는 항상 앞뒤에 공백이 없어야 한다. 다만, 함수 이름을 쉽게 구별할 수 있도록 함수 선언에서는 함수 이름과 왼쪽 괄호 사이에 공백이 있어야 합니다.
- 라인의 끝에 있는 경우를 제외하고, 함수의 매개변수를 구분하는 쉼표 뒤에는 항상 하나의 공백이 있어야 합니다.
- for문의 요소를 구분하는 각 세미콜론 뒤에는 항상 하나의 공백이 있어야 합니다.
- 문장을 종료하는 세미콜론 앞에는 공백이 없어야 합니다.
예시
/** @file crc.h
*
* @brief Compact CRC library for embedded systems for CRC-CCITT, CRC-16, CRC-32.
*
* @par
* COPYRIGHT NOTICE: (c) 2000, 2018 Michael Barr. This software is placed in the
* public domain and may be used for any purpose. However, this notice must not
* be changed or removed. No warranty is expressed or implied by the publication
* or distribution of this source code.
*/
#ifndef CRC_H
#define CRC_H
// Compile-time selection of the desired CRC algorithm.
//
#if defined(CRC_CCITT)
#define CRC_NAME "CRC-CCITT"
typedef uint16_t crc_t;
#elif defined(CRC_16)
#define CRC_NAME "CRC-16"
typedef uint16_t crc_t;
#elif defined(CRC_32)
#define CRC_NAME "CRC-32"
typedef uint32_t crc_t;
#else
#error "One of CRC_CCITT, CRC_16, or CRC_32 must be #define'd."
#endif
// Public API functions provided by the Compact CRC library.
//
void crc_init(void);
crc_t crc_slow(uint8_t const * const p_message, int n_bytes);
crc_t crc_fast(uint8_t const * const p_message, int n_bytes);
#endif /* CRC_H */
/*** end of file ***/
이유
소스 코드에서 공백의 배치는 텍스트만큼 중요합니다. 공백을 잘 사용하면 눈의 피로를 줄이고 프로그래머와 코드 검토자가 잠재적인 버그를 찾아낼 가능성을 높일 수 있습니다.
시행
이러한 규칙은 프로그래머가 코딩 작업을 할 때 준수하여야 하며, GNU Indent와 같은 툴을 이용해 시행되어야 합니다.
'Digital Developer' 카테고리의 다른 글
[ECCS] 빈 줄 (0) | 2020.10.09 |
---|---|
[ECCS] 정렬 (0) | 2020.10.08 |
[ECCS] 주석의 위치와 내용 (0) | 2020.10.03 |
[ECCS] 주석에서 허용하는 형식 (1) | 2020.10.02 |
[ECCS] 자주 사용하는 키워드 (0) | 2020.10.01 |
댓글