Ich bin versucht, so etwas wie das (in mehreren Dateien) zu tun:#den Wert in einer separaten Datei definieren, wie wirkt sich dies auf die Kompilierung aus?
common_header.h:
#define NX 256 //! grid size: x axis
#define NY 256 //! grid size: y axis
#define NZ 256 //! grid size: z axis
#define DX 0.5f //! grid step: x axis
#define DY 0.5f //! grid step: y axis
#define DZ 0.5f //! grid step: z axis
#define DT 0.1f //! grid step: time
extern std::ostream stream_out
common_header.cpp:
std::ostream stream_out("data_out.txt", ios_base::out);
file_1.cpp:
//functions are using #defined values
(...)
file_2.cpp:
//functions are using #defined values
(...)
file_3.cpp:
//functions are using #defined values
(...)
und meine Frage ist:
- Was passiert, WHE n Ich kompiliere das Programm mit einem Satz definierter Werte, ändere sie und kompiliere das Programm noch einmal?
- Wird der Compiler das ganze Programm neu aufbauen? Oder wird es nur eine Datei neu erstellen: "common_header.o" und Rest des Programms wird unverändert bleiben?
ich c bin gefragt ++,
Compiler Ich bin interessiert an:
- Visual Studio Compiler
- gcc-Compiler
- nvcc Compiler
Vielen Dank !
EDIT:
sory ich Sie täuschen .. ich einige globale externa Werte bin erklärt (wie Datenströme) in common_header.h und definieren sie in common_header.cpp Datei wird es etwas ändern? Ich bekomme * .o Dateien in jedem Fall
Wie kompilieren Sie das Programm in jedem dieser Fälle? – immibis
Überprüfen Sie die von Ihrem Build erstellten Zwischendateien - Sie werden feststellen, dass es keine common_header.o gibt. Ja, im Allgemeinen, wenn Sie eine Kopfzeile ändern, müssten Sie jede Quelldatei, die diese Kopfzeile enthält, direkt oder indirekt neu kompilieren. –
@immibis vs Compiler von IDE, gcc von Makefile (ich mache separate * .o Datei) nvcc (hängt vom System ich arbeite mit) – cukier9a7b5