我正在阅读Meyers编写的"Effective C++",并且遇到了"翻译单元"一词.
有人可以给我一个解释:
1)究竟是什么
2)在使用C++编程时,我应该何时考虑使用它
3)如果它只与C++有关,或者它可以与其他编程语言一起使用
我可能已经在不知道术语的情况下使用它了....
C语言允许在一次通过中读取源文件而无需向前看; 在任何时候,编译器只需要考虑在文件中当前位置之前出现的声明,原型,宏定义等.
这是否意味着对于要内联的函数调用,编译器可能需要在调用之前定义函数?例如:
int foo(void);
int bar(void) { return foo(); }
inline int foo(void) { return 42; }
Run Code Online (Sandbox Code Playgroud)
foo如果内联定义在定义的前面移动,是否更有可能内联调用bar?
我应该在我的代码中安排内联定义,以便它们出现在应该最好内联的调用之前吗?或者我可以假设任何高级足以进行内联的优化编译器都能够找到定义,即使它出现在调用之后(这似乎是gcc的情况)?
编辑:我注意到在Pelles C中,/Ob1选项确实需要在内联调用之前显示定义.编译器还提供了一个/Ob2删除此限制的选项(并且还允许编译器在没有内联说明符的情况下内联函数,类似于gcc所做的那样),但是文档声明使用第二个选项可能需要更多内存.