#define 매크로에 대한 질문입니다
글쓴이: 이명수 / 작성시간: 목, 2009/09/10 - 3:48오전
매크로에 대해서
#define height 13
이라고 정의하면 height를 뒤의 13이라는 상수로 사용하겠다는 것은 알고 있는데
#define __user
라고만 정의하면 정확히 어떻게 되는 것인가요?
매크로를 해석하면 단순히 __user를 무의미하게 만들겠다는 의도인가요?
그러면 예를 들어서
foo(void __user *para)
는 매크로 적용시 어떻게 해석이 되나요?
foo(void *para)로 해석이 되나요?
아니면 다르게 해석이 되거나 상황에 따라서 달라지나요?
#define __user
가 어떤 의미 혹은 어떤 의도인지 어떻게 되는 것인지 설명 부탁드립니다
Forums:
책을 보시거나.. GCC 전처리 부분만 해보세요
GCC man페이지에 보시면 전처리 과정 까지만 수행 하는 옵션이 있습니다.
맘대로 코딩 하신 후 전처리 과정의 결과를 보시면 아실수 있지요
프로그래머 다운 프로그래머가 되고 싶습니다. 많은 지도 편달 부탁드립니다^^
프로그래머 다운 프로그래머가 되고 싶습니다. 많은 지도 편달 부탁드립니다^^
단순하게...
즐린
#define __user
라고만 정의하면 정확히 어떻게 되는 것인가요?
-->
#define __user (null)이라고 보면 됩니다.
여기서 null은 그냥 빈 값이고
즉 그냥 __user라는 빈 값을 가진 매크로를 정의한다는 겁니다.
매크로를 해석하면 단순히 __user를 무의미하게 만들겠다는 의도인가요?
-->그건 #undef __user인데여,
아예 무의미하게 만들려면 undef해야 합니다.
그러면 예를 들어서
foo(void __user *para)
는 매크로 적용시 어떻게 해석이 되나요?
foo(void *para)로 해석이 되나요?
-->맞습니다.
즐린
답변 감사드립니다
답변 감사드립니다
제가 알고 있는
제가 알고 있는 건
#define AAA
와 같이 선언을 해서 쓰는 이유는
1. #ifdef, #ifndef 와 같이 특정 조건에 사용 하기 위하여
2. 메모를 하기위하여 입니다.
윈도우즈 디바이스 드라이버를 보면 인자에 IN OUT과 같은 매크로가 달려 있습니다.
단지 인자가 인풋을 위한 용도로 쓰일 것이냐 아니면 아웃풋을 위한 용도로 쓰일 것이냐와 같은 것을 개발자에게 알려주거나 이해하기 쉽게 하기 위함입니다.
int aaa(IN int *arg1, OUT int *arg2);
arg1은 함수에 입력을 위한 변수고
arg2는 함수의 출력을 위한 변수라고 생각할 수 있습니다.
답변 감사드립니다
네, 맞는 말씀입니다
답변 감사드립니다
#define A B 는 A를 B로
#define A B 는 A를 B로 바꾼다고 생각하면 편하실거 같은데요. =.=
B가 없으면 없는데로...
댓글 달기