Рассмотрим фрагмент:
#define CAT(a, b) a##b
#define M_0 CAT(x, y)
#define M(a) CAT(M_, a)()
M(0);
#define N_0() CAT(x, y)
#define N(a) CAT(N_, a)()
N(0);
Для меня оба определения M(a)
и N(a)
выглядят одинаково.Однако cpp
в GCC 4.6.1 расширяет это до:
CAT(x, y)();
xy;
Почему?