在C++多线程开发过程中难免会遇到很多意想不到的问题,最近遇到了参数传递的问题,总结一下。
在C++多线程开发过程中难免会遇到很多意想不到的问题,最近遇到了参数传递的问题,总结一下。
一般来说,无论是C还是C++,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile),一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。
编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。
最近项目过程中,为了节省存储空间,使用float而不是double来存储浮点数,结果遇到了float溢出的问题。当时还觉得奇怪,float表示范围挺大的啊,有没有超范围,怎么还会溢出?后来试验并查证了float的存储结构,有了答案,原来是float的有效位丢失了。