Во время делания я вижу ошибку вроде:
cc1: warnings being treated as errors
somefile.c:200: error: the frame size of 1032 bytes is larger than 1024 bytes
Номер строки указывает на закрывающую фигурную скобку функции c, которая имеет подпись как это:
void trace(SomeEnum1 p1, SomeEnum2 p2, char* format, ...) {
char strBuffer[1024];
...
Функция печатает некоторый материал в буфер.
Кто-либо знает то, что этот тип ошибки означает в целом?
Я предполагаю, что в этой подпрограмме есть какой-то большой буфер, выделенный стеком; это, вероятно, приводит к тому, что кадр стека этой функции превышает 1024 байта, что кажется некоторым ограничением, установленным компилятором для архитектуры, на которой вы строите. Возможные решения включают передачу флага компилятора для ослабления предупреждения, расширения верхнего предела размера стека или динамического выделения буфера.
Вот документация GCC, относящаяся к этому предупреждению:
STACK_CHECK_MAX_FRAME_SIZE
Максимальный размер кадра стека в байтах. GNU CC будет генерировать тестовые инструкции в функциях, не являющихся листовыми, чтобы гарантировать, что по крайней мере это количество байтов стека доступно. Если кадр стека больше этого размера, проверка стека будет ненадежной, и GNU CC выдаст предупреждение. По умолчанию выбрано так, что GNU CC генерирует только одну инструкцию в большинстве систем. Обычно вам не следует изменять значение этого макроса по умолчанию.
Из http://gcc.gnu.org/on Lineocs/gcc-2.95.3/gcc_17.html#SEC214