• FILE结构体的定义


    c语言FILE结构体的定义:

    <stdin.h>

    /* Define outside of namespace so the C++ is happy.  */
    struct _IO_FILE;
    
    __BEGIN_NAMESPACE_STD
    /* The opaque type of streams.  This is the definition used elsewhere.  */
    typedef struct _IO_FILE FILE;
    __END_NAMESPACE_STD
    #if defined __USE_LARGEFILE64 || defined __USE_SVID || defined __USE_POSIX \
        || defined __USE_BSD || defined __USE_ISOC99 || defined __USE_XOPEN \
        || defined __USE_POSIX2
    __USING_NAMESPACE_STD(FILE)
    #endif
    
    # define __FILE_defined 1
    #endif /* FILE not defined.  */
    #undef  __need_FILE
    
    
    #if !defined ____FILE_defined && defined __need___FILE
    
    /* The opaque type of streams.  This is the definition used elsewhere.  */
    typedef struct _IO_FILE __FILE;

    <libio.h>

    struct _IO_FILE {
    int _flags; /* High-order word is _IO_MAGIC; rest is flags. */
    #define _IO_file_flags _flags
    
    /* The following pointers correspond to the C++ streambuf protocol. */
    /* Note: Tk uses the _IO_read_ptr and _IO_read_end fields directly. */
    char* _IO_read_ptr; /* Current read pointer */
    char* _IO_read_end; /* End of get area. */
    char* _IO_read_base; /* Start of putback+get area. */
    char* _IO_write_base; /* Start of put area. */
    char* _IO_write_ptr; /* Current put pointer. */
    char* _IO_write_end; /* End of put area. */
    char* _IO_buf_base; /* Start of reserve area. */
    char* _IO_buf_end; /* End of reserve area. */
    /* The following fields are used to support backing up and undo. */
    char *_IO_save_base; /* Pointer to start of non-current get area. */
    char *_IO_backup_base; /* Pointer to first valid character of backup area */
    char *_IO_save_end; /* Pointer to end of non-current get area. */
    
    struct _IO_marker *_markers;
    
    struct _IO_FILE *_chain;
    
    int _fileno;
    #if 0
    int _blksize;
    #else
    int _flags2;
    #endif
    _IO_off_t _old_offset; /* This used to be _offset but it's too small. */
    
    #define __HAVE_COLUMN /* temporary */
    /* 1+column number of pbase(); 0 is unknown. */
    unsigned short _cur_column;
    
    signed char _vtable_offset;
    char _shortbuf[1];
    
    /* char* _save_gptr; char* _save_egptr; */
    
    _IO_lock_t *_lock;
    #ifdef _IO_USE_OLD_IO_FILE
    };
     
  • 相关阅读:
    【C语言程序设计】C语言渔夫打鱼晒网问题!
    【C语言】很少人真正了解 和 有什么区别!
    【C语言程序设计】C语言求亲密数!
    新手程序员该如何打造自己的个人品牌!谨记,共勉!
    【C语言程序设计】利用数组解决线性代数中的矩阵转置问题!
    【程序员段子】程序员太苦逼了,苍天啊!请给我一次重新择业的机会吧!
    27. Remove Element
    Leetcode Scratching Recorder
    Activity---弹出右侧窗口
    ViewPageIndicator--仿网易的使用
  • 原文地址:https://www.cnblogs.com/svking/p/FILE.html
Copyright © 2020-2023  润新知