gpt4 book ai didi

c - 如何在系统头文件中找到某些变量的 C 定义?

转载 作者:太空宇宙 更新时间:2023-11-04 04:35:08 25 4
gpt4 key购买 nike

我在系统文件中寻找 C 声明:

errno
stdin
stdout
stderr
sys_errlist

我怎样才能找到每一个的定义?

最佳答案

严格意义上,您找不到 errno 的定义或 stdout 变量<stdio.h> 的一些实现有stdout由一些宏定义。所以它可能不是 C 变量,只是一个名称 ...!你可以确定它是,在 #include <stdio.h> 之后, 一些类型为 FILE* 的“预定义”表达式(实际上是一个 l-value ,因为你可以获取它的地址)。

特别是,errno通常不是变量(因为每个线程都有自己的),至少在大多数 Linux 系统上不是。参见 errno(3) .在我的 Linux/x86-64 系统上,internal /usr/include/bits/errno.h header (应该只间接通过 #include <errno.h> 包含)包含:

extern int *__errno_location (void) __THROW __attribute__ ((__const__));
/* When using threads, errno is a per-thread value. */
# define errno (*__errno_location ())

许多与 C 编程相关的标准定义的名称可以是宏或某些编译器魔术或 builtins (例如 va_args 来自 <stdarg.h> ....)。没有什么需要 <stdio.h>成为一个文件;符合标准的编译器可以处理 #include <stdio.h>通过一些特殊代码(它可以神奇地设置一些名称,或者从外部获取一些编译器状态,例如数据库而不是文件)。

关于c - 如何在系统头文件中找到某些变量的 C 定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31425855/

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