sizeof(some_struct);
// file1.h
extern const int size;
// file2.cpp
#include "file1.h"
char arr[size]; // error expression must have a constant value
почему ругается и что делать?
extern -- это ОБЯВЛЕНИЕ. Ты не можешь в объявлении инициализатор писать. Нужно ОПРЕДЕЛЕНИЕ.
// file1.cpp const int size = 5 + 3 + sizeof(some_struct); Так пиши.
При этом ТАК // file2.cpp #include "file1.h" char arr[size]; // error expression must have a constant value писать всё равно нельзя... size должно быть КОНСТАНТОЙ, времени компиляции, а не const-переменной.
// file1.h #include "some_struct.h" static const int size = 5 + 3 + sizeof(some_struct); // file2.cpp #include "file1.h" char arr[size];
Обсуждают сегодня