2017-03-04 109 views
0

我看过this解决方案,但我遇到了同样的错误。对于一个类,我们不得不切换到c99编译器而不是gnu,但是现在timespec似乎被破坏了。除了“存储大小timespec未知”,我收到了一堆其他错误,如“CLOCK_MONOTONIC未声明”,“解除指向不完整类型的指针'struct timespec'”和未使用的变量警告,但我认为这些会去一旦我解决了编译器问题就离开了。timespec的存储大小未知

我无法想象有什么毛病我声明的timespec变量的方法,

struct timespec startTime;

+1

“我们不得不切换到C99编译器,而不是GNU” - 这是不明确的正当理由。 gcc支持C99以及C11,只需了解'-std ='选项。另一个问题是为什么你学习一个C版本,这个版本已经在6年前被当前和唯一的标准C11取消了。关于你的问题:阅读[问]并提供[mcve]。现在看起来,你似乎访问了你不应该使用的'struct'的内部结构。这意味着你的代码被设计破坏了。 – Olaf

+0

在我们新的作业细节中,他特意告诉我们使用标志'-std = c99'。对不起,我的意思是把它放在描述中。我不会选择使用这个,我们必须。你也可以详细说明如何访问结构体的内部结构。 – grizzle

+1

在你的问题中,你暗示你不使用gcc,因为它不符合c99标准。但根据你的评论,你**使用** gcc(与问题中的陈述相矛盾),只是使用我推荐的选项。在编程之前,您应该首先了解发生了什么。你应该仔细阅读我以前的评论,并试着理解。这不是一个勺子喂养服务! – Olaf

回答

3

由于这种“时钟”的支持是不是C99但POSIX,它不是由启用默认。

要启用它,你想通过选项-D_POSIX_C_SOURCE=199309L编译器或放

#define _POSIX_C_SOURCE 199309L 

在有问题的源文件(S)的最开始。

See also man clock_gettime for reference.