Как часто вам приходится сталкиваться с конструкцией sizeof(array)/sizeof(array[0]) для определения размера массива? Очень надеюсь, что не часто, ведь на дворе уже 2024 год. В заметке поговорим о недостатках конструкции, откуда она берётся в современном коде и как от неё наконец избавиться.
Рубрика «размер массива»
Как не надо проверять размер массива в С++
2024-04-05 в 11:14, admin, рубрики: c++, c++17, open source, openttd, pvs-studio, sizeof, массив, размер массиваКак размеры массивов C стали частью двоичного интерфейса библиотеки
2019-05-10 в 6:46, admin, рубрики: abi, array, C, двоичный интерфейс, размер массиваБольшинство компиляторов C позволяют получить доступ к массиву extern
с неопределёнными границами, например:
extern int external_array[];
int
array_get (long int index)
{
return external_array[index];
}
Определение external_array может находиться в другой единице трансляции и выглядеть так:
int external_array[3] = { 1, 2, 3 };
Вопрос в том, что произойдет, если это отдельное определение изменится так:
int external_array[4] = { 1, 2, 3, 4 };
Или так:
int external_array[2] = { 1, 2 };