我试图做那样的事情(在多个文件中):
common_header.h:
value = os.environ.get(variable)
...
elif isinstance(value, ConfigList) or isinstance(value, ConfigTree):
common_header.cpp:
value
file_1.cpp:
#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
file_2.cpp:
std::ostream stream_out("data_out.txt", ios_base::out);
file_3.cpp:
//functions are using #defined values
(...)
我的问题是:
我在问c ++,
我感兴趣的编译器:
非常感谢!
sory我误导你..我在common_header.h中声明了很少的全局外部值(例如数据流),并且在common_header.cpp文件中定义它们会改变什么吗?我在每种情况下都得到* .o文件
答案 0 :(得分:0)
当我使用一组定义的值编译程序,然后更改它们,然后再次编译程序时会发生什么?
程序将使用新定义重新编译,而不是旧定义。
我在common_header.h中声明了很少的全局外部值(例如数据流),并且在common_header.cpp文件中定义它们会改变什么吗?编译器会重新构建整个程序吗?或者它只是重新构建一个文件:
common_header.o
并且程序的其余部分将保持不变?
构建系统将至少重建所有依赖于标头的文件。较旧的系统要求您指定依赖项;更现代的将自动检测依赖。
这不是特定于编译器的。一些构建系统将比其他构建系统更有效地执行此操作 - 例如,通过跳过重新编译cpp文件及其所有依赖项不变。但是,您应该依赖的效果是将重建标头的所有依赖项。
答案 1 :(得分:0)
Visual Studio IDE非常智能,可以在头文件更改时重新编译使用头文件的源文件。
您表示您正在使用GCC和NVCC make
。是否重新编译源文件取决于您的 Makefile - 它与编译器或make
无关。