Вот простая функция с одним параметром int
:
void f(int x) {}
f(42);
И вот еще одна функция с одним параметром int
:
void g(int(x)) {}
g(42);
Теперь определим x
как тип:
typedef int x;
void h(int(x)) {}
h(42);
// warning: passing argument 1 of ‘h’ makes pointer from integer without a cast
(Это поведение, которое я наблюдаю с помощью gcc 4.8.2)
Как писатели-парсеры справляются с этой ситуацией?
Кажется, классический трубопровод Lexer → Parser → Semantic Checker → ... здесь не работает.