vs2008与vc6.0中的stdio.h是 不同的

这些天探究stdin到底是什么东西,但是找了好长时间还是没找到,关系到很多东西,在vc6.0下面牵扯到

_CRTIMP extern FILE _iob[];

至于这个FILE _iob[]是怎样初始化的,还不确定,在早早期的版本中这样初始化

Code:
  1. #pragma ident   "%Z%%M% %I% %E% SMI"  /* from Sun */   
  2.   
  3. #include <stdio.h>   
  4. #include "iob.h"   
  5.   
  6. FILE _iob[NSTATIC] = {   
  7. #if pdp11   
  8.     { NULL, 0, NULL, 0, _IOREAD,            0 },    /* stdin */  
  9.     { NULL, 0, NULL, 0, _IOWRT,         1 },    /* stdout */  
  10.     { NULL, 0, NULL, 0, _IOWRT|_IONBF,      2 },    /* stderr */  
  11. #else   
  12. #if u370   
  13.     { NULL, 0, NULL, 0, _IOREAD,            0 },    /* stdin */  
  14.     { NULL, 0, NULL, 0, _IOWRT,         1 },    /* stdout */  
  15.     { NULL, 0, NULL, 0, _IOWRT|_IONBF,      2 },    /* stderr */  
  16. #else   /* just about every other UNIX system in existence */   
  17.     { 0, NULL, NULL, 0, _IOREAD,            0 },    /* stdin */  
  18.     { 0, NULL, NULL, 0, _IOWRT,         1 },    /* stdout */  
  19.     { 0, NULL, NULL, 0, _IOWRT|_IONBF,      2 },    /* stderr */  
  20. #endif   
  21. #endif   
  22. };   

但在版本的升级当中,FILE结构体包含的东西越来越多,原来只有6个,现在到了8个

原来只是申明FILE _iob[]的初始化不再stdio.c当中,后来将其加在了链接库当中,

Code:
  1. #ifndef _STDIO_DEFINED   
  2. _CRTIMP FILE * __cdecl __iob_func(void);   
  3. #endif  /* _STDIO_DEFINED */   

微软这是要故意隐瞒一些知识,这是对我们这些知识分子信心的一种扼杀啊

你可能感兴趣的:(vs2008与vc6.0中的stdio.h是 不同的)