gpt4 book ai didi

c - c标准库中的stdin在哪里定义?

转载 作者:太空狗 更新时间:2023-10-29 16:54:05 26 4
gpt4 key购买 nike

我在 stdio.h 中找到了这一行:

extern struct _IO_FILE *stdin;

基于这个“extern”关键字,我认为这只是一个声明。我想知道标准输入在哪里定义和初始化?

最佳答案

它在您的 C 库的源代码中定义。您通常只需要用于编译的 header ,但您可以找到许多开源标准库(如 glibc)的源代码。

在 glibc 中,它在 libio/stdio.c 中定义如下:

_IO_FILE *stdin = (FILE *) &_IO_2_1_stdin_;

依次使用 libio/stdfiles.c 中的宏定义如下:

DEF_STDFILE(_IO_2_1_stdin_, 0, 0, _IO_NO_WRITES);

DEF_STDFILE 宏的定义因一些因素而异,但它或多或少地使用文件描述符 0< 设置了适当的 FILE 结构(这是 Unix 上的标准输入)。

定义可能(当然确实)因您的 C 库而异,当然也因平台而异。如果需要,您可以继续围绕标准库的 I/O 组件的各个部分进行探索。

关于c - c标准库中的stdin在哪里定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6906238/

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