Carica valori da txt a variabili nello spazio dei nomi

0

Attualmente sto lavorando a un progetto C ++ già avviato. I file esistenti sono i seguenti:

-main.cpp
-HydroModel.cpp
-ODESys.cpp

-HydroModel.hpp
-ODESys.hpp
-ODESysSol.hpp

Nel file HydroModel.hpp ci sono alcune costanti definite nella configurazione del namespace, per esempio

 namespace config 
 { 
     const unsigned int dim = 40; 
     const unsigned int NaN = 10101; ... 
 }

Questo file è incluso in main.cpp, ODESysSol.hpp e HydroModel.cpp. Queste costanti vengono continuamente utilizzate in questi file.

Tuttavia, queste costanti non sono sempre le stesse, in quanto cambiano a seconda del caso studio analizzato. L'idea è di estrarre queste variabili in un file txt per evitare di compilare ogni volta che il case study cambia.

So che sarebbe facile se le variabili fossero definite all'interno di una funzione o di main (), ma finora non ho trovato il modo di farlo nel preprocessore.

È possibile caricare il file txt e definire le variabili all'interno dello spazio dei nomi o devo riscrivere tutto ciò che è correlato a quelle variabili?

    
posta Muthahu6 29.09.2016 - 15:12
fonte

3 risposte

2

Cambia il tuo file di intestazione HydroModel.hpp in

namespace config 
{ 
    extern unsigned int dim; 
    extern unsigned int NaN;
}

In HydroModel.cpp scrivi

namespace config 
{ 
    unsigned int dim; 
    unsigned int NaN;
}

In questo modo, non dovrai riscrivere gran parte del tuo codice esistente.

Ora tutto ciò che resta da fare è implementare una funzione che inizializza quelle variabili dal file di testo. Successivamente assicurati che questa funzione venga chiamata all'avvio del programma, prima che qualsiasi altro codice cerchi di accedere alle variabili.

    
risposta data 29.09.2016 - 15:37
fonte
4

Se vuoi "evitare la compilazione", allora deve essere caricato in fase di runtime . Non può essere qualcosa da una variabile globale di const di compilazione. Puoi avere un oggetto con (forse static ) funzioni che restituiscono questi valori come caricati da un file. Suggerisco le funzioni piuttosto che esporre le variabili direttamente per impedire al mondo esterno di modificare i loro valori.

Ma non possono essere solo% globali% di% delle variabili.

    
risposta data 29.09.2016 - 15:30
fonte
0

Se si desidera evitare la ricompilazione, è necessario utilizzare un file di configurazione che sarà caricato in fase di esecuzione.

Puoi anche usare ifdef e quindi utilizzare le direttive del preprocessore nei file di progetto per scegliere il valore di una costante, ma che richiede la ricompilazione.

    
risposta data 29.09.2016 - 16:07
fonte

Leggi altre domande sui tag