Цікаво, що насправді відбувається, якщо я визначу масив нульової довжини int array[0];
в коді? GCC взагалі не скаржиться.
Зразок програми
#include <stdio.h>
int main() {
int arr[0];
return 0;
}
Уточнення
Я насправді намагаюся з’ясувати, чи ініціалізовані таким чином масиви нульової довжини, замість того, щоб вказувати, як змінна довжина в коментарях Дархазера, оптимізована чи ні.
Це тому, що я повинен випустити якийсь код у дикій природі, тому я намагаюся розібратися, чи потрібно мені обробляти випадки, коли значення SIZE
визначено як 0
, що відбувається в якомусь коді зі статично визначенимint array[SIZE];
Я був фактично здивований, що GCC не скаржиться, що призвело до мого питання. З отриманих відповідей, я вважаю, що відсутність попередження багато в чому пояснюється підтримкою старого коду, який не оновлювався новим синтаксисом [].
Оскільки я в основному задався питанням про помилку, я відзначаю відповідь Лундіна як правильну (перший був у Наваза, але він був не настільки повний) - інші вказували на його фактичне використання для конструкцій, накладених на хвости, хоча це актуально, чи не так ' t саме те, що я шукав.
[]
в Python чи навіть ""
у C? Іноді у вас є функція або макрос, який вимагає масиву, але у вас немає даних, щоб їх вкласти.