Включение структуры в каждый .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 шт):

Автор решения: AlexGlebe

Определение структуры в хедере не создаёт проблем, пока вы не создадите переменные.

Если вы создадите переменную данного типа в коде функции, то в стеке выделиться много места, и винда например, быстро упадёт. Так как у неё стек очень маленький.

Если ваши строки можно хранить в единственном числе, то большой список разумнее держать в статической памяти кода программы (не в стеке).

Сами коды ошибок можно будет понятнее выложить в хедере константными числами с помощью 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;
}
→ Ссылка