
int call(int i)
{
    return i;
}

#define XCAT3(a, b, c)    a ## b ## c

#define CALL_2(arg, place, line) int XCAT3(cl, place, line) = call(arg);

#define CALL_1(arg)    CALL_2(arg, __FUNCTION__, __LINE__)

int main(int argc, char* argv[])
{
    CALL_1(1); 
    return 0;
}