1.FILE结构
struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsize;
char *_tmpfname;
};
typedef struct _iobuf FILE;
2.C语言运行库CRT
- 任何一个C程序,它的背后都有一套庞大的代码来进行支撑,以使得该程序能够正常运行。这样的一个代码集合称为运行时库 (Runtime Library) ,而C语言的运行库,称为C运行库(CRT)。
- 一个C语言运行库大致包含了如下功能:
- 1)启动与退出:包含入口函数及入口函数所依赖的其他函数等;
- 2)标准函数:由C语言标准规定的C语言标准库所拥有的函数实现;
- 3)I/O:I/O功能的封装和实现;
- 4)堆:堆的封装和实现;
- 5)语言实现:语言中一些特殊功能的实现;
- 6)调试:实现调试功能的代码
3.为什么用Visual C++ 2005/2008 编译的程序无法在别人的机器上运行?
- 因为Visual C++ 2005/2008 编译的程序使用了manifest机制,这些程序必须依赖于相对应版本的运行库。
- 解决办法:1)不依赖于CRT的DLL,使用静态链接;2)将相应版本的运行库的程序一起发布给最终用户。