Можно ли с помощью GCC отключить -Wframe-больше-чем для каждой функции? - PullRequest
8 голосов
/ 11 января 2011

Используя GCC, возможно ли указать набор функций, которые освобождены от -Wframe-large-than? (Например, основной.)

Ответы [ 3 ]

10 голосов
/ 11 января 2011

GCC предоставляет вам прагмы для этой цели:

http://gcc.gnu.org/onlinedocs/gcc-4.5.2/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas

В настоящее время он не будет делать именно то, что вы хотите, так как кажется, что он делает это для каждого файла, но в следующей версии gcc (4.6) это выглядит так, как если бы оно было контекстно-зависимым:

http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas

1 голос
/ 30 июля 2013

Это немного устарело, но я наткнулся на него, ища тот же ответ, поэтому я решил опубликовать свое решение (найденное методом проб и ошибок):

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wframe-larger-than="

void func() 
{ int x[2000] = {}; printf("%d",x[1]); }    

#pragma GCC diagnostic pop

похоже на работу. По какой-то причине попытка использовать diagnostic warning не сработала. Кажется невозможным изменить размер стека, который генерирует предупреждение. Кроме того, вам нужно = в конце. Может быть, следующий парень найдет это и сэкономит немного времени :). Это 4.6.2 (на кросс-компиляторе ARM).

John

0 голосов
/ 11 января 2011

Вы можете использовать GCC диагностическая прагма .

...