Я использую GCC версии 8.2
В нескольких частях кода я использую небольшие функции. У каждой функции есть тесты (то есть тесты инфраструктуры Unity). Тесты определяются как макросы #define, которые тестируют очень специфические вещи. Например, если число положительное.
Теперь при компиляции кода с использованием флага -Wextra я получаю предупреждение о неиспользуемых переменных, хотя я использую их в определенных макросах.
Вопрос в том, что GCC не распознает макрос как переменную или я что-то упустил?
Пример:
#define compare(a,b) ( ((a) == (b)) ? 1 : 0 )
...
void f() {
int a;
a = f1();
if(compare(a,123))
printf("It works");
}
В этом случае GCC выдаст предупреждение о неиспользуемой переменной a, хотя она используется макросом (помимо присвоения значения функцией f1 ()).