Игнорировать неиспользуемые переменные в блоке кода в - PullRequest
0 голосов
/ 13 июня 2018

У меня есть большая кодовая база кода C, часть которого генерируется кодом из прекомпилятора Oracle Pro * C.

Мы используем компилятор GNU gcc.

Прекомпилятор Pro * Cгенерирует код, который содержит неиспользуемые переменные, который выдает много предупреждений, связанных с -Wunused-variable, которые я хотел бы игнорировать.

Я пробовал следующее, что я нашел в других вопросах, но он не работаетКод C (сокращен до минимального примера).

 int main(void)
 {
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wunused-variable"
         int  a=0;
 #pragma GCC diagnostic pop
         int b=0;
         return 0;
 }

Я все еще получаю ошибку -Wunused-variable для переменной a.

 aa.c: In function 'main':
 aa.c:8:13: warning: unused variable 'b' [-Wunused-variable]
          int b=0;
              ^
 aa.c:6:14: warning: unused variable 'a' [-Wunused-variable]
          int  a=0;
               ^

Команда GCC:

gcc-8 -Wall -Wextra -pedantic aa.c -o a

Если вам интересно, если я уберу прагму pop, предупреждения не выдаются.

1 Ответ

0 голосов
/ 17 июня 2018

Я нашел решение добавить __attribute__((unused)) перед сгенерированными переменными, которые были проблематичными.В этой ситуации всегда есть только 4 релевантные переменные, поэтому это было возможно.

Я написал команду bash в файле make сразу после прекомпилятора Pro * C:

for var in varA varB varC varD; do sed -i "0,/${var}/{s/\(${var}\)/__attribute__((unused))\1/}" $file_name; done

Надеюсь, что это возможнобыть полезным для кого-то.

...