매개변수가 생략된 함수 의 포인터는 구식기술인가요?
글쓴이: gurumong / 작성시간: 화, 2009/08/25 - 12:55오전
함수선언에서 괄호안의 매개변수를 생략한 형태가 비원형선언이고
구식기술이므로 사용하지 않는것이 좋다고 알고있는데요
아래와 같이 매개변수가 생략된 함수포인터도 마찬가지로 사용하지 않는것이 좋은가요?
매개변수 타입이나 갯수에 신경쓰지 않고 사용할 함수를 결정할수있어서 아주 가끔은 유용할꺼 같은데요;;
int (*pfunc)() = (void*)0; switch (mode) { case MODE_A: pfunc = func_a; break; case MODE_B: pfunc = func_b; break; CASE MODE_C: pfunc = func_c; break; }
Forums:
C언어라고 가정하고
서로 다른 인자를 받아들인다면 실제 사용하지 않고 원형만 맞추기 위한 껍데기 인자나 공용체 등을 만들어 사용하는 쪽이 좋을 것 같습니다.
printd(double d); printi(int i);
와 같은 함수가 있다면
printd(double d, int i); printi(double d, int i); 나
union arg {double d; int i;};
printd(union arg *a);
printi(union arg *a);
그러면 switch case문 대신 함수 테이블을 구성할 수가 있기 때문에 사용하는 입장에서 더 편하고 실수도 적어질 겁니다.
:)
댓글 달기