gpt4 book ai didi

c - 如何在 macOS 上找到 C 头文件 errno.h 的位置?

转载 作者:行者123 更新时间:2023-12-04 16:38:25 25 4
gpt4 key购买 nike

我是 C 语言新手,正在尝试查看头文件的源代码 errno.h .
我怎样才能:

  • 弄清楚头文件在我的电脑上的存储位置?
  • 查看头文件的来源?

  • 我试过的
    来自 this answer , 正在运行 gcc --print-file-name=errno.h在我的 $HOME目录只输出 errno.h .
    来自 this answer , 正在运行 cpp -dM /usr/include/errno.h | grep 'define E' | sort -n -k 3输出:
    clang: error: no such file or directory: '/usr/include/errno.h'
    clang: error: no input files
    来自 this answer , 正在运行 clang -E /usr/include/errno.h输出:
    clang: error: no such file or directory: '/usr/include/errno.h'
    clang: error: no input files
    我知道有效的一种解决方案正在运行 sudo find / -name "errno*.h" -type f .但是,这会返回 许多 结果。我想知道是否有一些编程方式可以使用 C 相关工具(例如通过调用 gcc )来查找源代码。
    我的电脑
  • macOS 版本:10.15.7 (Catalina)
  • clang --version --> Apple clang version 12.0.0 (clang-1200.0.32.27)
  • 最佳答案

    不完全清楚你在这里想做什么 - 因为 <errno.h>是一个标准库头文件,你可以在:/usr/include/errno.h 中找到它
    ... 编辑 - 我现在可以看到您与 Catalina 的问题。见下文:
    至少在我的(较旧的)OSX 机器上,这个标题的信息量不是很大 - 包括 <sys/errno.h>反过来,它至少提供了符号常量:EPERM, ENOENT, ... (参见:man intro 概览)
    <sys/errno.h>本身包括更多的系统头文件,尽管这些头文件很少涉及用户空间开发,但您可以大致了解编译器如何使用预处理阶段递归地找到这些头文件:clang -E /usr/include/errno.h - 这适用于 gcc也。

    对于 卡特琳娜 , header 现在位于 SDK 下。我确信这是有原因的 - 多个 SDK(例如,iphone 开发等),以及一些防止创建 /usr/include 的安全性的事后理由。目录。无论如何,对于 Catalina,你需要 Xcode 工具:xcrun (参见: man xcrun )找到 SDK 路径: .../usr/include

    `xcrun --show-sdk-path`/usr/include
    提供路径,以便查看 <errno.h> :
    less `xcrun --show-sdk-path`/usr/include/errno.h
    因此,您可以使用以下命令运行预处理器:
    clang -E `xcrun --show-sdk-path`/usr/include/errno.h

    关于c - 如何在 macOS 上找到 C 头文件 errno.h 的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65866733/

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