C语言为什么可以重写标准库函数?

Python015

C语言为什么可以重写标准库函数?,第1张

这个问题是一个好问题,我之前也没思索过或者尝试过,首先我们弄清楚一件事,函数声明可以放在任何头文件,实现可以放在任何实现该函数的源文件中,那么就存在一个问题: 编译时,到底优先去使用哪一个,为什么没有把标准库中的函数扩展过来;在windows下标准库被编译成了msvcr120.dll(msvcr100.dll,这里指release版),所以并不是扩展到代码中,而是在调用时动态链接; 而题主在其中自定义文件中实现了该函数,所以编译时找到了该函数的实现,并不会去链接dll(这应该是编译器做的一些工作,确定系统的dll需要加载哪些),所以题主的程序执行时就只有一份fputc了,并不冲突。 题主可以通过快捷键跳转声明就知道了,VS下,点选fputc实现函数按F12跳转到声明,指向的是stdio.h,再按一次跳转到你自己的定义了。Qt的话使用F2。大概就是这样子了,可追问。

把文件名改成**.h (**是自己命名的)

以后只要在头文件加

#include"**.h"就可以了

""表示先从当目录找

<>表示先从库找

看你把文件放在哪而定

后果如下:

文件打开后,可能有一些操作被缓冲在内存中,若不正常关闭,缓冲在内存中的数据就不能真正写入到文件中,可能造成数据丢失。

文件是系统中的一种资源,打开文件是对资源的占用,若不关闭,则别的程序就不能使用此资源。

比如你给文件追加写了一句话到文件中,但没有关闭,就可能那句话还存放在内存缓冲区中,还没有被真正的写入到文件。你打开文件也找不到刚刚写入的那句话

-物联网校企联盟技术部