[질문]__FILE__,__LINE__질문하나 더..^^
글쓴이: fefe7270 / 작성시간: 목, 2008/02/28 - 1:34오후
제가 기존에 사용하던 매크로 함수를 아래와 같이 수정했습니다.
파일 aa.h에서
#define wmalloc(x) wmalloc(x,__FILE__,__LINE__)
로 수정 했습니다.
이렇게 수정하고 컴파일을 돌리는데
wmalloc 함수를 사용했던 lib 파일에서 undefined symbol이라는 에러가 납니다.
제 생각에는 lib가 이전 define인 즉 wmalloc을 인식하고 있는것 같은데요.
lib를 다시 컴파일 하지 않고 사용할 수 있는 방법이 있나요?
그렇지 않으면 __FILE__,__LINE__ 말고 각 함수나 Line을 가지고 올 수 있는 다른 방법이 있는건지요?
Forums:
질문이 이해가 안됩니다.
lib가 뭔지, 그 안에서 어떤 코드를 사용했는지, wmalloc은 lib 안에 정의된 건지 다른 곳에 있는 건지 등등 상황을 좀 더 자세히 써주셔야... -.-
#define wmalloc(x)
#define wmalloc(x) wmalloc(x,__FILE__,__LINE__)
기존 lib가 wmalloc(x)만 주어 코딩하고 있는데 디버그 목적으로 __FILE__과 __LINE__ 출력을 위해 위와 같은 매크로를 만들었다. 이러한 상황이 맞습니까?
(제가 괜히 설레발치며 삼류소설 쓴 건 아닌지...)
undefined symbol 오류가 났다면 일단 기존 wmalloc 함수(기존 것은 매크로 함수가 아니었겠죠?)를 가지고 어처구니없는 실수를 저지르지 않았는지 확인해 보세요.
이쯤에서 두 번째 상황을 제시하겠습니다. 혹시 위의 사항이 아니고 차후의 디버그를 예상하고 malloc 대신 wmalloc을 사용하고,
#define wmalloc(x) malloc(x)
처럼 만들어두신 것입니까? 그렇다면 고칠 때 이렇게 해야 할 것입니다.
와 같이 하여야 할 것입니다. %zu는 size_t를 10진 부호 없는 정수로 출력하기 위한 형식인데, 컴파일러가 C99 표준과 호환되지 않는다면 z는 빼주세요.
둘 다 잘못 찍은 거라면, 난감이군요. 자세히 설명해 주세요.
"그거 이름은 하늘이라고 합니다. 무사장님." - 제국군 가시나무 군단 312소대장 틸러 달비 부위
http://cppig1995.n-pure.net/mh || 몽화 대사전
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
댓글 달기