Когда я пытаюсь скомпилировать это (я пытаюсь понять, что здесь ##), я получаю сообщение об ошибке «i2 undeclared». У меня нет переменной под этим именем, это весь код, который у меня есть.Weird ошибка компилятора с GCC (кодовые блоки)
#include <stdio.h>
#define A(x,y) x##2-y
int main()
{
int i = -1;
int j = -2;
printf("%d \n", A(i,j));
return 0;
}
Что вы ожидаете? Просто посмотрите, что делает оператор ## '_concatenation operator_ (и почему он называется так). – Olaf
Где находится переменная «i2», с которой компилятор жалуется. Я не использовал его. –
, когда вы передаете i в качестве параметра в функции A(), препроцессор принимает его как i и объединяет с 2? – tigris