C 에서 Overloading 구현

by digipine posted Nov 01, 2017
?

Shortcut

PrevPrev Article

NextNext Article

ESCClose

Larger Font Smaller Font Up Down Go comment Print
순수 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;
        defaultprintf ("huh?\n"); break;
    }
}
 
int main (void)
{
    func (1, 1.0);
    func (2, 2);
    func (3, "three");
    func (4, 40);
    return 0;
}
TAG •