用个最简单的程序说明我的问题吧:
#include <stdio.h>int main(int argc, char *argv[])
{
   printf("how do you do\n");
   return 0;
}问题:
stdio.h在系统中位于VC的include目录底下,就我的系统而言是:
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\打开之后可以找到printf的声明:
_CRTIMP int __cdecl printf(const char *, ...);当我们连接(link)的时候,由于stdio.h里面的所有函数都是声明,肯定要找它对应的库文件(lib或者dll)。问了来了,编译器是这样找到的?首先我知道是在VC配置环境下面:Tool-》options-》directories下面开始找。
有俩个办法可以指定连接时库文件名称,一是在project-》link-》写入库文件名称。二是可以在程序代码中写入预处理:
#pragma comment( lib, "path" ).这样link的时候,都可以找到相应的printf函数体,进行连接编译。现在的问题是,我做了上面的一个最简单程序,把project-》link-》配置里面的库文件都给删除了,而且我在stdio.h里面找不到关于#pragma comment的预处理,但是我clean之后,重新编译,仍然可以编译,然后我通过试验,发现他连接的是libcd.lib这个文件,我和疑惑,疑惑编译器如果找到这个文件的。难道是默认的?
不知道那位高手能帮我解答这个问题。感激不尽。