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