|
//test.h 헤더 정의
extern void CALLBACK test(int n);
//test.cpp 정의
void CALLBACK test(int n)
{
}
void CTest::CTest()
{
.... // 위 CALLBACK 함수를 호출하는 코드 들어감.
}
.....
가져다 쓰는곳.
#include "test.h"
CTest gTest[2];
궁금한점은 위와 같이 했을때
gTest라고 선언된 두개의 배열 클래스가 각각의 CALLBACK 함수를 가지고
호출을 하게 되는가에 대한 문제입니다.
선언된 클래스는 배열로 2개를 잡았지만 두개의 인스턴스들이 하나의 CALLBACK 함수를
가지고 돌게 되는건 아닌지 궁금하여 질문합니다.
하나의 테스트로 test2.h test2.cpp라는 파일에 똑같은 CALLBACK test(int n) 이란 함수를만들고
해더의 선언된 내용만 지워 주었습니다.
그리고 가져다 쓰는곳에서
#include "test.h"
#include "test2.h"
CTest gTest[2];
CTest2 gTest2[2];
머 이런식으로 썻더니 아무 워닝이나 에러도 띄우지 않았지만 실제 실행하니 콜백이 불려지지도 않고
심지어는 브레이크포인트도 걸리지 않더군요..
결국 test2.cpp 의 CALLBACK 함수의 이름을 바꾸어 주었더니 정상적으로 되더군요.
이렇게 된건 가만히 생각하면 당연한 결과인것 같긴한데요.
그래서 클래스가 배열로 선언됐을때도 비슷한 일이 생기는건 아닐까 생각이 들어 질문올립니다.
고수님들의 답변 기다리겠습니다.
|