카테고리 없음

source reading(1)

라이언(Ryan) 2010. 12. 27. 08:58
반응형

매뉴얼을 읽자 : infogcc

Reference Manual 

 - source/document

컴파일러 warning 레벨을 최대로 높임.

 - warning 없애야함. (커멘트)

소스를 잘 볼 수 있는 툴이 필요 ex)emacs, 이클립스등.

정적분석도구 : malloc <-> free찾음.


관찰

Blocking/Non Blocking(임베디드에서는 중요)

nonblocking일경우

ex) fcntl 

event driven으로 작성.

메모리 사용을 확인

malloc <-> free찾음

하드웨어를 이해해야함.

 - 하드웨어 매뉴얼을 봐야함.


코딩규칙

- 모든 파일명에 특수문자금지

- case insensitive

한 라인에 최대 글자수 제한 : 80 ~ 132

함수의 라인수 제한 : 50~100라인 (2페이지 이내)

fixed size 폰트 사용

탭문자사용규칙(4 space or 8 space로 바꾸어 사용. 탭문자 사용하지 말것)


헤더파일

#ifndef _????_?_

#define _????_?_

...

#endif

프로젝트 초반에는 헤더파일 안에 사용하는 헤더파일들을 나열하고 그걸 include

디렉터리를 사용. (모두 다 영어)


주석

프로그램을 잘 설명하는 것은 주석이 아니라 소스다

코드의 주요 Section 앞에는 comment 블록을 둔다. <=> Doxygen(주석을 문서화하는 프로그램)


변수

변수 이름을 잘 짓자. (31글자 이내의 변수를 사용)

scope에 상관없이 모든 변수명은 다르게

global변수는 한 곳에서만 선언.

변하지 않는 변수는 const사용.

멀티쓰레드 프로그램은 변하는 공유변수는 volatile 선언.(커널 코드에 중요)

명시적인 type사용.

double, float을 사용할 때 표준을 확인(컴파일러 cpu마다 결과가 다름.)

8진수 사용금지

연산의 중간 결과가 허용된 크기를 넘는지 확인(변수의 최대/최소값 주의)


type casting

불필요한 type casting 자제.

데이터 손실 주의

포인터 type과 다른 type 사이의 변환 금지


포인터

2중포인터 사용 자제

포인터끼리 연산 금지

함수포인터 자제

local변수에 대한 포인트 자제


MACRO

대문자 사용

function macro보다는 진짜 function사용

inline function을 사용(macro같은)

enable 1, disable 0같이 상식적 사용

#undef사용 자제

#pragma를 사용할 때는 반드시 문서화

 - 2의 승수로 structure 사용. (하드웨어 dependency때문에 pragma사용)

macro 에서 return, goto, continue, break는 자제

함수용 macro에서 괄호 반드시 사용

*문장형 macro는 중괄호 대신 do... while사용. 


반응형