순수 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; } |