본문 바로가기

Programming

Linux kernel coding style(C language)

kernel.org는 Linux kernel소스코드를 배포하는 웹사이트다.

이 사이트의 Documentation을 보면 많은 자료에 대한 이론 및 설명을 볼 수 있다.

 

https://www.kernel.org/doc/html/latest/

 

kernel.org에서 권장하는 kernel coding style이 있다.

https://www.kernel.org/doc/html/v4.10/process/coding-style.html

 

리눅스의 핵심인 Linux kernel에 대한 코딩 스타일에 대해서 서술되어 있기 때문에 따를 이유가 충분하다.

물론 개인, 기업 등 상황에 따라 주관적인 코딩 스타일을 가질 수 있기 때문에 항상 옳다고는 할 수 없으나,

적어도 Linux programming에 있어서 선호된다고 생각한다.

 

*들여 쓰기

8자 들여 쓰기 사용

들여 쓰기를 하느 이유는 제어블록이 시작하고 끝나는 위치를 명확히 하기 위해서 사용함. 

 

*한줄에 여러 문장 쓰지 않기

 

*괄호

기술적인 근거는 없지만 kernighan 과 Ritchie가 선호하는 마지막줄에 중괄호 열기를 기본으로 한다.

 

if(num == 1){
	printf("1\n");
	do_function();
}else if(num == 2){
	printf("2\n");
	do_function();
}else{
	printf("NULL\n");
}

 

 

switch(num){
case 1:
	return 1;
case 2:
	return 2;
case 3:
	return 3;
default:
	return NULL;
}

 

조건문의 한 분기만 명령문이 단일로 존재 할 경우 중괄호를 모두 사용해야 하지만, 모든 분기가 단일 명령문일 경우 중괄호를 사용하지 않는다.

 

//모두 단일 명령문
if(check_input() == 0)
	do_function();
else
	do_function();
    
//일부 단일 명령문
if(feel()){
	do_function;
	check_my_feel();
}else{
	go_to_sleep();
}

 

*띄어쓰기(공백)

콤마(,) 뒤는 띄어쓰기

 

cat, dog, apple, file

 

괄호 안의 양쪽 끝을 띄어쓰지 않기

 

size = sizeof(struct file);

 

포인터는 변수 또는 함수 이름에 붙여서 사용

 

char *input_string;
char *find_string(char *ptr);

 

*주석

코드가 수행하는 방식을 적지 말고, 함수 본문에 주석을 넣지 말아야 함. 기능만을 적어 둔다.

 

*함수 리턴 값

함수의 이름이 action 이거나 imperative command 일 경우 오류코드 정수를 리턴.

함수의 이름이 참과 거짓을 나타내면, boolean 값을 리턴.