본문 바로가기
728x90

Research/Programming25

Why do a lot of #defines in the kernel use do { ... } while(0)? http://www.kernelnewbies.org/faq/There are a couple of reasons: (from Dave Miller) Empty statements give a warning from the compiler so this is why you see #define FOO do { } while(0). (from Dave Miller) It gives you a basic block in which to declare local variables. (from Ben Collins) It allows you to use more complex macros in conditional code. Imagine a macro of several lines of code like: #d.. 2004. 12. 18.
변수사용에 관하여... http://comeng.andong.ac.kr/%7Esoftware/report/edie/ch10.htm 10 변수 사용시 일반적으로 주의할 사항 범위(scope) 지속도(persistence) 결합시간(binding time) 데이터 구조(data structure)와 제어구조(control structure)의 관계 변수를 한 가지 목적으로만 사용하는 방법 전역변수(global variables) 10.1 범위(scope) 범위는 변수의 유명도, 즉 어떤 변수가 프로그램 전체에 얼마나 알려져 있는가를 측정하는 방법이다. 범위를 최소화 하라. 변수 참조부(reference)와 변수를 가까운 곳에 놓아라. 10.2 지속도(persistence) 지속도는 한 변수의 생존기간을 나타내는 용어다. 변수들이 .. 2003. 11. 26.
make:하나의 목표에 대하여 여러 명령을 쓰면 http://kldp.org/KoreanDoc/html/gcc_and_make/gcc_and_make-3.html-------------------------------------------------------------------------------- target: cd obj HOST_DIR=/home/e mv *.o $HOST_DIR -------------------------------------------------------------------------------- 하나의 목표에 대하여 여러 명령을 쓰면 예기치 않은 일이 벌어집니다. 기술적으로 말하자면 각 명령은 각자의 서브쉘에서 실행되므로 전혀 연관이 없습니다. -.- cd obj 도 하나의 쉘에서 HOST_DIR=/home/e도 .. 2002. 12. 5.
#, ## ※ 프리프로세서문을 위한 연산자 프리프로세서문 내에서만 사용할 수 있는 연산자들이 있는데, 다음과 같이 3개가 있다. ┌────────────────────────────────────────────┐ │ #, ##, defined │ └────────────────────────────────────────────┘ #과 ##은 주로 #define을 사용하여 매크로를 정의할 때 사용되는 연산자들로 #은 바로 뒤의 인 자를 스트링으로 바꾸어주는 역할을 한다. 예를 들어 어떤 정수 변수의 이름과 그 값을 출력시키 는 매크로를 작성하고자 할 때 다음과 같이 하면 된다. ┌────────────────────────────────────────────┐ │ #define PRI(x) printf(#x "= %.. 2002. 12. 4.
728x90