매크로 함수
글쓴이: chroma14 / 작성시간: 목, 2003/08/07 - 1:08오후
#ifdef __DEBUG__ assert(expression); #endif
코드를 조금 간결히(?) 하고자 조건 컴파일 구문을 포함해서 LASSERT()라고 매크로 치환을 아래와 같이 했는데 에러가 있어서...
헤더파일은 아래와 같습니다.
1 #ifndef __ERROR_H__ 2 #define __ERROR_H__ 3 4 #include <errno.h> 5 #include <stdio.h> 6 #include <stdarg.h> 7 #include <assert.h> 8 9 #define __DEBUG__ 10 11 #define LASSERT(expression) { \ 12 #ifdef __DEBUG__ \ 13 assert(expression); \ 14 #endif /*__DEBUG__*/ \ 15 }
에러내용은
In file included from test.c:2: error.h:15: `#' operator should be followed by a macro argument name error.h:15: `#' operator should be followed by a macro argument name In file included from error.c:9: error.h:15: `#' operator should be followed by a macro argument name error.h:15: `#' operator should be followed by a macro argument name
Forums:
Re: 매크로 함수
이렇게 처리하면 되지않을까요?
매크로 함수 선언중에 #로 시작하는 문장을 넣을 수없다는
에러가 난듯...
진리를 나의 수준으로 끌어내리지 마라.
나를 진리의 수준으로 끌어올려라. - 배꼽 중에서
ㅎㅎ 감사합니다~
하루종일 이것만 붙잡고 있을 뻔했네요...
감사합니다~
Hello KLDP.
assert 없에는 방법
assert 는 컴파일시에 -DNDEBUG를 지정하면 자동적으로 없어집니다.
매크로를 사용하지 마시고 그냥 사용하시면 됩니다.
예)
assert(true);
gcc -o a.out a.cpp -DNDEBUG
그럼 컴파일 한 후에 assert코드가 사라집니다. 그럼 수고하세용
Perl 만세~~~
댓글 달기