读书人

编译器如何避免这个有关问题

发布时间: 2013-03-14 10:33:15 作者: rapoo

编译器如何处理这个问题?
编译器如何处理这个问题?

一个c程序,包含了string.h, string.h里的函数在某个.c文件里实现,头文件只是对那些函数声明,而实现在某个.c 文件里。

当我们的程序包含string.h的时候,就相当于引用第三方库(只不过这个第三方库是标准的而已)。

既然是第三方库,那么这个 string.h和 某个 .c文件构成了动态库, 既然是动态库,那么为什么 没有看到 那些函数前有导出符号?


如果不是不可以看成第三方库,那么为什么我们看不到string.obj这种中间临时文件呢?



[解决办法]
动态库和静态库都有可能
[解决办法]
何为“你自己新建了一个第三方的”?

[解决办法]
不算第三方库的。。
一般来说这些库函数都是做好二进制文件才安装到计算机上的,静态链接或者运行时动态链接。
就像glibc,虽然有头文件与实现文件,但是gcc在编译的时候并不编译库函数的源文件,而是直接链接。

MS下的库函数也是以lib的二进制形式下发的,虽然有源文件,但不编译源文件,而是直接链接库
[解决办法]
VS自带运行库的lib啊。

比如VS2012的 ..\Microsoft Visual Studio 11.0\VC\lib 目录

具体对应看http://msdn.microsoft.com/EN-US/library/2kzt1wy3%28v=VS.110,d=hv.2%29.aspx

读书人网 >C语言

热点推荐