V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hackingwu
V2EX  ›  程序员

xcode 中如何看到 C 标准类库的源码

  •  
  •   hackingwu ·
    hackingwu · 2016-06-03 14:44:57 +08:00 · 5998 次点击
    这是一个创建于 3095 天前的主题,其中的信息可能已经有所发展或是发生改变。

    xcode 中想看某一个来自 C 标准类库里某个方法的实现,按 mac 键(不知道这个按键怎么打)+左键点击方法名。却显示一个“?”,请问是还需要做什么配置吗?谢谢!

    14 条回复    2016-06-03 17:42:35 +08:00
    congeec
        1
    congeec  
       2016-06-03 14:52:28 +08:00
    1. C 里面没有类,那是标准库。 C++才有类库
    2. 你所调用的 C 代码一般是动态链接到 libc 的,你只能看到头文件里的函数声明,看不到实现。
    OS X 用的 libc 在这里 https://opensource.apple.com/source/Libc/Libc-1082.20.4/。值得一提的是 OS X 底层基于 FreeBSD ,你也可以看未修改过的 FreeBSD 的 libc 代码 https://github.com/freebsd/freebsd/tree/master/lib/libc
    hackingwu
        2
    hackingwu  
    OP
       2016-06-03 15:04:40 +08:00
    @congeec 我在 ubuntu 下,用 Clion 都可以看到,比如你可以看到 size_t 的定义。
    paradoxs
        3
    paradoxs  
       2016-06-03 15:10:38 +08:00
    在 Xcode 里面是看不到的, 闭源.
    只能通过别的方法看.
    congeec
        4
    congeec  
       2016-06-03 15:17:21 +08:00
    @hackingwu 你看到的只是头文件,头文件里是不会有函数实现的。不信你在 Ubuntu 下用 Clion 看 printf 的实现。回去好好补补啥叫声明啥叫定义吧。
    misaka19000
        5
    misaka19000  
       2016-06-03 15:17:47 +08:00
    @congeec 请问标准库实现一般是放在什么地方的?
    congeec
        6
    congeec  
       2016-06-03 15:25:26 +08:00
    @misaka19000
    C 标准库辣么多。。。。有 glibc, msvc, bsd libc......
    先找到你在用什么版本的 libc ,然后上网搜源码就是啦

    一般操作系统是不会提供源码的,提供的都是二进制包。
    hackingwu
        7
    hackingwu  
    OP
       2016-06-03 17:06:23 +08:00
    不要动不动就会补一补,弄得自己比别人懂很多一样,我现在不是问怎么找源码,我是问在 xcode 里怎么 [方便] 地找到某一变量、方法的定义或实现,即使是头文件的定义也好啊。很多 IDE 都有提供这种功能。
    janxin
        8
    janxin  
       2016-06-03 17:16:11 +08:00
    LZ 你需要的快捷键是⌃⌘J
    wlee1991
        9
    wlee1991  
       2016-06-03 17:16:39 +08:00
    这个问题我想了好久。不知道有没有开源的工具,把标准源代码管理起来,方便查阅。
    LMkillme
        10
    LMkillme  
       2016-06-03 17:17:51 +08:00   ❤️ 1
    @hackingwu 你自己说了是按 command + 鼠标左键参看方法,然后问怎么查看 c 方法,@congeec 告诉你了 Xcode 只能查看到 c 标准库的声明。现在倒回来说别人喷你,你只是问怎么 Xcode 查看方法?啧啧,还真玻璃心,倒打一耙。
    zhanglp888
        11
    zhanglp888  
       2016-06-03 17:35:14 +08:00
    在 xcode 里,只是看到声明就 ok 了,了解传什么参数,返回什么就行了,没想过去看它里面的实现。

    如果想看实现的话,单纯去网上找 https://opensource.apple.com/source/Libc/ 类似的看就行了

    在 xcode 里看的目的是什么?
    wadahana
        12
    wadahana  
       2016-06-03 17:40:43 +08:00   ❤️ 1
    @hackingwu 我真的觉得 @congeec 比你懂很多,非常多。
    hitmanx
        13
    hitmanx  
       2016-06-03 17:41:12 +08:00
    如果要看头文件的话, linux 一般是放在 /usr/include 下面的, shared library\static library 一般是在 /usr/lib 下,不太清楚 mac 下是不是类似的地址。原则上 ide 一般都可以添加自定义代码查找的路径。不过比较奇怪的是像 libc 的这些头文件应该都已经添加在默认的路径里,要不然它 include 的时候会找不到才对,这就解释不了为什么它不能 indexing 了
    wohenyingyu01
        14
    wohenyingyu01  
       2016-06-03 17:42:35 +08:00 via iPhone
    正常情况就是看到头文件,比如 strcpy 我都能看到不需要任何配置,楼主看不到要不就是拼错了,要不就是没有 import ,或者 xcode 坏了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2725 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:43 · PVG 14:43 · LAX 22:43 · JFK 01:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.