嘿我正在尝试使用clang编译使用OS X上的c11标准库中的函数的c代码。
编译器选项-std=c11
允许我使用c11语言功能。但是当我使用at_quick_exit
等新功能时,我收到以下警告implicit declaration of function 'at_quick_exit' is invalid in C99
。
源代码包含以下行#include <stdlib.h>
铿锵选项-stdlib
没有帮助。
OS X Yosemite 10.10.3
$ clang -v
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.3.0
Thread model: posix
Ubuntu 14.04 LTS
$ clang -v
Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4)
Target: x86_64-pc-linux-gnu
Thread model: posix
更明确。如何在OS X上获得c11标准库?
感谢您提供任何帮助。
答案 0 :(得分:1)
通常,单独的自托管系统编译器不提供包括运行时库在内的完整标准C环境。通常,底层系统提供大多数(如果不是全部)库(和头文件),而编译器只是编译。
因此,如果您需要某些特定系统未提供的特定功能,则必须自己编写,或者从与目标系统兼容的可移植库中获取它们。
在这种特殊情况下,您可能还会发现quick_exit()
本身并非由系统libc
提供,因此应该很容易自己编写这两个函数。