순수 C언어로 SDK를 작성하고 있는데 함수의 오버로딩 문제가 생겨서 자료를 찾아보니
다음과 같은 방법이 있더군요.
그런데 좀 인자의 형식을 인자로 포함해야되는 것이 좀 마음에는 들지않네요.
#include <stdarg.h>#include <stdio.h>void func_1 (double f) { printf ("f = %f\n", f); }void func_2 (int i) { printf ("i = %d\n", i); }void func_3 (char *s) { printf ("s = %s\n", s); }void func (int usage, ...){ va_list ap; va_start (ap, usage); switch (usage) { case 1: func_1 (va_arg (ap, double)); break; case 2: func_2 (va_arg (ap, int)); break; case 3: func_3 (va_arg (ap, char *)); break; default: printf ("huh?\n"); break; }}int main (void){ func (1, 1.0); func (2, 2); func (3, "three"); func (4, 40); return 0;} |
