Просто любопытно, что на самом деле происходит, если я определяю массив с нулевой длиной int array[0];
в коде? GCC вообще не жалуется.
Пример программы
#include <stdio.h>
int main() {
int arr[0];
return 0;
}
Разъяснение
Я на самом деле пытаюсь выяснить, были ли инициализированы эти массивы нулевой длины, вместо того, чтобы указывать на переменную длину в комментариях Darhazer, оптимизированы или нет.
Это связано с тем, что я должен выпустить какой-то код в wild, поэтому я пытаюсь выяснить, должен ли я обрабатывать случаи, когда SIZE
определяется как 0
, что происходит в некотором коде с статически определено int array[SIZE];
Я был действительно удивлен, что GCC не жалуется, что привело к моему вопросу. Из полученных ответов я считаю, что отсутствие предупреждения во многом связано с поддержкой старого кода, который не был обновлен новым синтаксисом [].
Поскольку я в основном интересовался ошибкой, я отмечаю ответ Лундина как правильный (сначала был Nawaz, но он был не таким полным), остальные указывали на его фактическое использование для хвостовых конструкций, в то время как соответствующие, не совсем то, что я искал.