微信公众号: 星点课堂
新浪微博:女儿叫老白
网易云课堂:女儿叫老白
网易云课堂免费课程:《C++跨平台开发中的编译错误》
-----------------------------------------------------------------------------
在每个独立的c文件(.cpp 或,c)是一个翻译单元。编译器在每个翻译单元独立运行,这时它只能看到这个单元。因此头文件所提供的信息是非常重要的,它决定了编译器对程序的其他部分的理解。在头文件中的声明或在cpp的某个部分的声明是非常重要了,这样编译器可以明确知道需要做什么。比如,在头文件中声明:void function(double),编译器知道,如果传入一个整数,那么需要把它转化为都double再调用该接口(这被叫做提升promotion)。如果没有这样声明,编译器简单的假设有一个function(int)存在,它不会做提升,错误数据就会被悄悄传递给function()。因为传输的数据在内存中是按照int格式保存的而非double格式。
---------------------------------------------------------------------------
参考资料:《C++编程思想》两卷合订本中文版P125第一段),(美) Bruce Eckel Chuck Allison著