По какой-то непонятной причине в моем коде есть что-то вроде:
#define pippo(x) printf("%d",x)
...
... many lines down in the code
...
int pippo = 0;
Один и тот же идентификатор pippo
был использован как для функционально-подобного макроса, так и для имени переменной! Помимо путаницы, которая могла возникнуть у плохого сопровождающего, мне было интересно, допустимо ли это стандартом.
И C99, и C11 (в 6.10.3.) Говорят:
10 [...] Каждый последующий экземпляр функционально-подобного имени макроса, за которым следует a (в качестве следующего токена предварительной обработки вводится последовательность токенов предварительной обработки, которая заменяется списком замены в определении [...]
Они не говорят, что происходит, если имя макроса, похожее на функцию, , а не , за которым следует '(', и я беспокоюсь, что какой-то компилятор может посчитать, что это ошибка (или может просто выдать предупреждение).
Не слишком ли я беспокоюсь?