#在单独的文件中定义值,它将如何影响编译
#define value in separate file, how will it affect compilation?
我正在尝试做类似的事情(在多个文件中(:
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
(...)
我的问题是:
- 当我用一组定义的值编译程序,然后更改它们,然后再次编译程序时,会发生什么
- 编译器会重新构建整个程序吗?还是只重新构建一个文件:"commonheader.o",程序的其余部分将保持不变
我在问c++,
我感兴趣的编译器:
- visualstudio编译器
- gcc编译器
- nvcc编译器
非常感谢!
编辑:
对不起,我误导了你。。我在common_header.h中声明了一些全局外部值(如数据流(,并在common_header.cpp文件中定义了它们,这会改变什么吗?我在每种情况下都会得到*.o文件
Visual Studio IDE足够智能,可以在头文件更改时重新编译使用头文件的源文件。
您表示您正在将GCC和NVCC与make
一起使用。是否重新编译源文件取决于您的Makefile——这与编译器或make
无关。
当我用一组定义的值编译程序,然后更改它们,然后再次编译程序时,会发生什么?
该程序将用新的定义代替旧的定义进行重新编译。
我在common_header.h中声明了一些全局外部值(如数据流(,并在common_header.cpp文件中定义了它们,这会改变什么吗?编译器会重新构建整个程序吗?还是只重新构建一个文件:
common_header.o
,程序的其余部分将保持不变?
生成系统将至少重新生成依赖于标头的所有文件。较旧的系统要求您指定依赖项;更现代的系统将自动检测依赖关系。
这不是编译器特定的。一些构建系统将比其他构建系统更有效地完成这项工作,例如,在所有依赖项不变的情况下跳过对cpp文件的重新编译。然而,您应该指望的效果是,标头的所有依赖项都将重新生成。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 二叉排序树无法编译
- "virtual"对C++析构函数有何影响?
- 编译对移动应用的影响?
- 如果我对"while"块发表评论,为什么程序会死机?其中的"yield"线有何影响?
- std::cout会影响编译的结果吗
- #include 多个.cpp中的标准文件,与将其 #include 在预编译标头中会影响可执行文件的大小?
- 预编译的标题有多少影响MFC
- (类似提升)仅标头库如何影响编译大小
- 模板实例化对编译持续时间的影响
- Qt也不例外.这对C++代码有何影响
- 为什么源文件的名称会影响编译
- auto对编译时间的影响
- 同一类型的多个声明是否会影响编译时间
- (隐藏)影响C/ c++编译的MS Visual Studio设置
- #在单独的文件中定义值,它将如何影响编译
- 注释会影响编译时间吗?
- 基例如何影响使用递归函数的哪些行
- 我正在更改我的代码,但编译的程序不受影响
- 在docker中编译不同内核的代码会受到什么影响?