Включение структуры в каждый .cpp файл
Подскажите пожалуйста, вот к примеру есть структура:
struct my_struct
{
int my_int;
std::string my_string_mass[100000] = { "mass_1" , "mass_2" ,"mass_3"};
};
Если я такую структуру будут инклудить в каждый .cpp файл в котором необходимо использовать эту структуру, то в каждый .cpp будет добавлен мой огромный my_string_mass ?
Ответы (1 шт):
Определение структуры в хедере не создаёт проблем, пока вы не создадите переменные.
Если вы создадите переменную данного типа в коде функции, то в стеке выделиться много места, и винда например, быстро упадёт. Так как у неё стек очень маленький.
Если ваши строки можно хранить в единственном числе, то большой список разумнее держать в статической памяти кода программы (не в стеке).
Сами коды ошибок можно будет понятнее выложить в хедере константными числами с помощью enum. Памяти эти константы требовать не будут, а строки вы сможете получить с помощью статического массива.
// .h
# include <string>
struct my_struct
{
int my_int;
enum{NoError,Err1,Err2,Err3};
static std::string my_string_mass[100000];
};
// errors.cpp
std::string my_struct::my_string_mass[100000] = {
"NoError","mass_1" , "mass_2" ,"mass_3"};
// main.cpp
int fun(){
return my_struct::Err2;
}
# include <iostream>
int main(){
std::cout<<"[fun()]=`"<<my_struct::my_string_mass[fun()]<<"`"<<std::endl;
}