• 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
    };
     
  • 相关阅读:
    双链表
    单链表
    二叉树的遍历
    leetcode-9. 回文数
    leetcode-8. 字符串转换整数 (atoi)
    leetcode-7. 整数反转
    leetcode-6. Z 字形变换
    leetcode-5. 最长回文子串
    manacher-线性查找算法-(最长回文子串问题)
    bfprt-线性查找算法-(topK问题)
  • 原文地址:https://www.cnblogs.com/svking/p/FILE.html
Copyright © 2020-2023  润新知