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