커널 코딩스타일

EEEFFEE·2023년 12월 7일

raspberrypi4-kernel

목록 보기
1/12

23.12.07 최초 작성

링크 참고

1. 기본 입력

1.1 기본 원칙

  • tab (들여쓰기) : 8 글자
  • 일반적인 상황에서 들여쓰기는 금지 (if 구문과 같은 하위 항목이나 주석은 예외)
  • 변수 초기화 및 할당 : 각 요소마다 줄 나눠쓰기
  • 중괄호 {} : 한 문장으로 표현할 수 있을 때 생략
열 때닫을 때
함수다음 줄에 입력다음 줄의 처음에 입력
그 외
(if, for, while...)
같은 줄에 입력다음 줄의 처음에 입력

int function(int x)
{
        body of function
}

        switch (action) {
        case KOBJ_ADD:
                return "add";
        case KOBJ_REMOVE:
                return "remove";
        case KOBJ_CHANGE:
                return "change";
        default:
                return NULL;
        }
        
        
        if (x == y) {
                ..
        } else if (x > y) {
                ...


        } else {
                ....
        }
        
        if (condition)
        		action();

  • 각 요소 뒤에 공백문자 입력
사용사용X
변수변수, 타입 선언과 변수포인터 변수와 * (*arg)
키워드if, switch, case, for, do, whilesizeof, typeof, alignof, attribute
연산자=, +, -, <, >, *, /, %
|, &, ^, <=, >=, ==, !=, ?, :
&, *, +, =, ~, !, sizeof, typeof
alignof, __attribute__, defined
++, --
구조체 연산자-->, .

2. 타입 정의

  • 구조체를 정의하고 변수를 선언할 때 struct virtual_containor *a;와 같이 struct를 활용
  • typedef 사용 지양

3. 함수

  • 1 ~ 2페이지 내에 표시 될 수 있을 정도의 길이로 작성
  • 5 ~ 10개의 지역변수 사용

4. 주석

  • 함수 내부에 과도한 주석 작성 X (함수에 작성 시 시작 부분에)
  • /* */형식의 주석 사용 (// 사용 X)

5. linux-c-mode 형식 자동으로 맞추기

  • emacs : 자동으로 소스 파일의 형식 맞춰주는 유틸리티
(defun linux-c-mode ()
  "C mode with adjusted defaults for use with the Linux kernel."
  (interactive)
  (c-mode)
  (c-set-style "K&R")
  (setq tab-width 8)
  (setq indent-tabs-mode t)
  (setq c-basic-offset 8))
  • ident : emacs와 비슷한 유틸리티

0개의 댓글