#include <stdio.h>

#define def_add(T) \
T add_##T(T a, T b)\
{\
    return a + b;\
}

#define add(T) add_##T

def_add(int);
def_add(float);

int main(void)
{
    printf("%d%.0f\n", add(int)(2, 2), add(float)(5., -3.));
    return 0;
}