- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
#include <stddef.h>
#define H 0.2
#define A 0
#define B 2
void main( void )
{
const double h = 0.2;
const int b = 2;
const int a = 0;
const size_t size1 = (b - a) / h;
double arr1[size1] = { 1 }; // Вы видете тут VLA? А он есть
const size_t size2 = (B - A) / H;
double arr2[size2] = { 1 }; // И тут есть
double arr3[(const size_t)((b - a) / h)] = { 1 }; // И тут тоже
double arr4[(const size_t)((B - A) / H)] = { 1 }; // И здесь тоже
double arr5[10] = { 1 }; // Ну хоть тут нет, слава Селестии
}
Такие дела. Без инициализатора, конечно же, работает. Но мне интересно, почему он это именует variable-sized object? Везде константы.
Ты точно хотел проинициализировать их как {1, 0, 0, 0, ...}?
Хочешь настоящую константу - юзай enum.
когда лень изык переключать
И после этого кто-то говорит, что няшная лучше плюсов.
Cи устарел, нынче эра паскаля и делфиных приблуд, от компании Эмбаркадеро.
Сишка - кал.
http://ideone.com/IYUS6z
http://ideone.com/VKok5k
НУ ТУПЫЫЫЫЕЕЕ
А как блядь он посчитает тебе значение?
Скажи блядь спасибо что вообще есть VLA.
В C89 и их не было. Там, сука, любой sizeof был константный.
В enum ты флоат и структуру не впишешь. См. https://govnokod.ru/25013#comment437498
Принцессе Коловрат же