printf函数是run-time library库函数吗?
Charles Petzold的programming windows的第一章中有这样一句话:
yes,once upon a time C programmers used C run-time library functionsiyang such as printf without declaring them first.
看不懂了。printf的代码不是链接时都从静态链接库中复制到执行文件中去了吗?那么和run-time library还有什么关系? printf
[解决办法]
c:\Windows\System32>dumpbin /EXPORTS msvcrt.dll
[解决办法]
find "printf"
224 DF 0002D4D1 _cprintf
232 E7 0002EB89 _cwprintf
479 1DE 000308E7 _scprintf
480 1DF 00030995 _scwprintf
494 1ED 000309CD _snprintf
496 1EF 00030A63 _snwprintf
553 228 00030DFE _vscprintf
554 229 00030EAA _vscwprintf
555 22A 00030EE1 _vsnprintf
556 22B 00030F3E _vsnwprintf
684 2AB 00031D51 fprintf
697 2B8 00032508 fwprintf
754 2F1 000327C2 printf
774 305 00030888 sprintf
799 31E 0003091F swprintf
813 32C 0003303E vfprintf
814 32D 000330A0 vfwprintf
815 32E 00033102 vprintf
816 32F 00030DA0 vsprintf
817 330 00030E35 vswprintf
818 331 00033166 vwprintf
841 348 000331CA wprintf
[解决办法]
crt可以静态链接,也可以动态链接。
[解决办法]
我估计这段讲的是函数原型的重要性。
[解决办法]
链接选项里有md和mt之分
还有,你说的静态链接库不就是crt吗?
这句话确实是强调声明的重要性
[解决办法]
C运行库有三种:MSVCRT LIBC LIBCMT,他们的选择可以分别使用链接参数/MD /ML /MT来完成
一般用到的都是msvcrt.dll,所以printf的代码应该是引用自msvcrt
[解决办法]
yes,once upon a time C programmers used C run-time library functionsiyang such as printf without declaring them first.
是的,曾经有段时间,C程序员使用CRT库函数(例如printf),但并不事先声明。