Скажем, у меня есть этот тип:Безопасно ли ссылаться на структуру, которая инициализируется в ее инициализаторе?
struct Bitmap
{
int w, h, *b;
};
Я инициализацией это следующим образом:
int w = 7, h = 4;
struct Bitmap bmp = {w, h, calloc(bmp.w * bmp.h, sizeof(*bmp.b))};
ли он гарантировал, что компилятор будет инициализировать struct
последовательно? Могу ли я быть уверенным, что к моменту ввода поля bmp.b
поля инициализируются полями bmp.w
и bmp.h
?
Почему заказ важен? – chux
BTW, должен убедиться, что продукт рассчитан с использованием 'size_t' math:' bmp.w * bmp.h' -> '(size_t) bmp.w * bmp.h'. – chux
Если сначала инициализируется поле 'bmp.b', то поля' bmp.w' и 'bmp.h' содержат мусор во время инициализации' bmp.b' и, следовательно, такие вещи, как 'calloc (-542 * 3546, sizeof (* bmp.b)) '. –