Поиск массивов переменной длины в коде

Когда размер моих входных данных достаточно велик, ошибка сегментации возникает там, где в проекте используются массивы переменной длины. Я хочу удалить их все, как заставить GCC отображать каждое найденное объявление массива переменной длины?

Я пытался использовать -Wstack-usage=1000 и фильтровать сообщение warning: stack usage might be unbounded, но это дает мне функцию, а не объявление. Есть ли способ лучше?


person lvella    schedule 15.03.2016    source источник
comment
используйте вариант -std=c89 -pedantic, затем warning: ISO C90 forbids variable length array   -  person BLUEPIXY    schedule 15.03.2016
comment
Удаление всех VLA звучит как излишество. Вам просто нужно удалить негабаритные или VLA с непредсказуемым размером. Может быть, вы можете найти их.   -  person too honest for this site    schedule 15.03.2016
comment
Ну, я действительно не рассматриваю VLA, где размер является static const переменной...   -  person lvella    schedule 15.03.2016
comment
@BLUEPIXY Не могу этого сделать. Перерывы for(int i = 0;....   -  person lvella    schedule 15.03.2016
comment
Я слегка встревожен тем, насколько ужасным должен быть код, если недостаточно знать функцию, содержащую VLA.   -  person EOF    schedule 16.03.2016


Ответы (1)


Я был почти уверен, что делал это раньше, и благодаря комментариям я снова нашел решение: используйте переключатель компилятора -Wvla.

person lvella    schedule 15.03.2016