[완료] 함수 포인터를 사용한 함수이름 공유.
글쓴이: yundorri / 작성시간: 월, 2007/06/04 - 11:36오전
안녕하세요, 항상 이자리에서 많은 분들의 도움을 받음에 감사드립니다.
다름이 아니라, 같은 기능을 하는 이름이 다른 두 함수를 동일하게 공유를 할 수 있을까요?
이를테면,
void This_is_Sample_Function( int arg, ... ) { ... Blah Blah ~ ... } void This_is_Example_Function( int arg, ... ) { ... Blah Blah ~ ... }
위 두 함수는 동일한 내용과 동일한 반환값, 동일한 인자를 가지고 있습니다.
물론, This_is_Sample_Function()에서 This_is_Example_Function()을 호출해도 되겠지만
가변인자를 가지고 있으면 그것도 자유롭지 못합니다.
저의 경우 Blah Blah~ 가 꽤 긴데요, 저런게 한 서너게 있으니 그것만 몇 백 라인이
되버려 하나의 내용이 바뀌면 모두 찾아서 바꿔줘야하는 불편함이 이만저만이 아닙니다.
서로다른 함수 두개 (인자, 타입, 반환값은 같고 이름만 다른)를 동일한 것으로 만들 수 있을까요???
도움 부탁드립니다.
ps) 제목도 뭐라고 해야될지 몰라서 써 놓긴했는데 적절하지 않은것 같아 쫌 그렇네요~ ^^
Forums:
함수 포인터를
함수 포인터를 이용하면 되지 않나요?
function pointer를 쓰면
function pointer를 쓰면 어떨까요?
void This_is_Sample_Function( int arg, ... )
{
...
Blah Blah ~
...
}
void (*This_is_Example_Function)( int arg, ... ) = This_is_Sample_Function;
void (*
void (* This_is_Example_Function)(int arg, ... ) = &This_is_Sample_Function
???
const 를 적당히 붙힐수도 있을 것 같은데...
오오~ 그런
오오~ 그런 방법이~
당장 해 봐야겠군요. ^o^
해 보고 잘 되면 답글 달겠습니다.
#define
#define This_is_Example_Function This_is_Sample_Function
하면 되지 않나요?
좋은 방법이긴
좋은 방법이긴 합니다만,
그렇게 하면 함수를 두 번 정의했다고 컴파일시에 오류가 날것 같습니다.
잘 됩니다. 좋은 것
잘 됩니다. 좋은 것 배우고 갑니다.
geneven님, auditory님, 이름을 남기지 않으신 분 감사드립니다.
제목 바꿨습니다. 그리고 혹, 내공이 필요하신분을 위해서...
함수포인터의 선언은
함수포인터의 선언은 어떻게????
위 예제를 가지고 몇개의 파일로 나누어보았습니다.
main.c
util.c
util.h
Makefile
위와 같이 되어있을 경우 컴파일 시 다음과 같은 에러가 발생합니다.
요점은 '함수포인터의 선언은 어떻게 하는지'와 관련된 것 같습니다.
완료됐다고 생각했는데 이런문제에 부딪쳤습니다.
아아~ 고수의 길은 멀고도 험하군요. (남을 가르킬 수 있는 고수까지는 아니더라도
자신의 문제는 스스로 해결할 수 있어야 할 텐데 말입니다.)
부탁드립니다.
함수포인터를
함수포인터를 "선언"해야 하는데 "정의"하셨군요. 함수 포인터 변수도 다른 포인터 변수와 똑같은 변수입니다.
헤더 파일에서 int x; 해놓고 C 파일에서 int x = 3; 이렇게 써준 것과 똑같은 상황입니다. functionB, functionC라는 변수가 두 번씩 정의되었으니 에러가 나지요.
헤더에서는 extern을 붙여주세요.
main.c
main.c
util.h
util.c
이렇게 해보세요..
-----
라고 써놓고 보니 다른분께서 이미 답을 달아주셨군요 ㅎㅎ
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
아, 저도 글써놓고
아, 저도 글써놓고 함수포인터로 검색해서 보다보니까
함수포인터도 변수의 하나라는 것을 알게되었습니다.
감사합니다. 문제도 해결된 듯 합니다.
개인적인 취향으로는 매크로가 짱
#define functionB functionA
#define functionC functionA
입니다요
댓글 달기