gpt4 book ai didi

c - 为什么我的 Mac 上的任何 C 编译器都没有定义 timespec_get?

转载 作者:太空宇宙 更新时间:2023-11-04 00:34:32 24 4
gpt4 key购买 nike

根据C11标准(7.27.2.5),在time.h中指定了一个函数timespec_get。试过好几个编译器,包括clang和gcc的好几个版本,应该是支持C11的,但是总是缺少这个功能。宏 TIME_UTC 也丢失了。

这是一个测试文件mytime.c:

#include <time.h>
#include <stdio.h>
int main() {
printf("C version: %ld\n", __STDC_VERSION__);
fflush(stdout);
struct timespec ts;
timespec_get(&ts, TIME_UTC);
}

以及使用 Clang 的输出:

$ cc --version
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

$ cc -std=c11 mytime.c
mytime.c:9:3: warning: implicit declaration of function 'timespec_get' is invalid in C99
[-Wimplicit-function-declaration]
timespec_get(&ts, TIME_UTC);
^
mytime.c:9:21: error: use of undeclared identifier 'TIME_UTC'
timespec_get(&ts, TIME_UTC);
^
1 warning and 1 error generated.

我注释掉了 timespec_get 行只是为了确保我使用的是 C11,我确实是。

对于 gcc 版本 4.8、5 和 6,我得到的结果基本相同。

我使用的是 Mac,OS 10.11.6。

最佳答案

Mac OS X 标准库不符合任何现代版本的 C 或 POSIX。它停留在 C99 和 POSIX 2001 上,甚至在这些方面也存在一致性问题。

关于c - 为什么我的 Mac 上的任何 C 编译器都没有定义 timespec_get?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52028083/

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