gpt4 book ai didi

c - C语言中的FILE类型(Linux)

转载 作者:行者123 更新时间:2023-11-30 19:15:26 25 4
gpt4 key购买 nike

在源文件中哪里可以找到 FILE 类型的声明?

我在stdio.h中找不到它。我的意思是它的声明。是int类型吗?文件描述?或者它是一个结构?

我需要在没有标准库的情况下在我的代码中实现它。

最佳答案

不完全是一个简洁的答案,但会起作用

写一些像program.c这样的程序

#include <stdio.h>
int main() {
FILE *fp;
return 0;
}

使用调试符号进行编译

gcc program.c -g -o program

使用gdb查看类型

# gdb ./program
(gdb) b main
(gdb) run
(gdb) ptype fp
type = struct _IO_FILE {
int _flags;
char *_IO_read_ptr;
char *_IO_read_end;
char *_IO_read_base;
char *_IO_write_base;
char *_IO_write_ptr;
char *_IO_write_end;
char *_IO_buf_base;
char *_IO_buf_end;
char *_IO_save_base;
char *_IO_backup_base;
char *_IO_save_end;
struct _IO_marker *_markers;
struct _IO_FILE *_chain;
int _fileno;
int _flags2;
__off_t _old_offset;
short unsigned int _cur_column;
signed char _vtable_offset;
char _shortbuf[1];
_IO_lock_t *_lock;
__off64_t _offset;
void *__pad1;
void *__pad2;
void *__pad3;
void *__pad4;
size_t __pad5;
int _mode;
char _unused2[20];
} *

或检查

/usr/include/stdio.h

typedef struct _IO_FILE FILE;

/usr/include/libio.h

struct _IO_FILE {
int _flags; /* High-order word is _IO_MAGIC; rest is flags. */
#define _IO_file_flags _flags
.
.
.
}

无论如何,正如 @molbdnilo 指出的那样,它是非常特定于实现的

关于c - C语言中的FILE类型(Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32606608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com