我读过很多关于这方面的文章,我可以告诉你(我读过的每一篇文章都有这样的假设,所以让我们早点离开这一步):
我已经适当地包括了时间
我已经指定了POSIX常量和-std=gnu99
代码:

#if __STDC_VERSION__ >= 199901L
#define _XOPEN_SOURCE 600
#else
#define _XOPEN_SOURCE 500
#endif /* __STDC_VERSION__ */

#include <linux/soundcard.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>

#include <string.h>
#include <stdlib.h>
#include <time.h>
#define uint unsigned int

struct KEYDATA
{
   struct timestruct duration;
} ;

// output/display function
int main(void)
{
   struct KEYDATA keyData[20];

   keyData.duration.tv_nsec = 999;

   return 0;
}

编译时:
pi@raspberrypi:~/src/midi-timing $ gcc tmp.c -O2 -Wall -pedantic -o tmp -std=gnu99 -lrt
tmp.c:19:22: error: field ‘duration’ has incomplete type
    struct timestruct duration;
                      ^
tmp.c: In function ‘main’:
tmp.c:27:11: error: request for member ‘duration’ in something not a structure or union
    keyData.duration.tv_nsec = 999;
           ^
tmp.c:25:19: warning: variable ‘keyData’ set but not used [-Wunused-but-set-variable]
    struct KEYDATA keyData[20];
                   ^
pi@raspberrypi:~/src/midi-timing $

我承认我的C编程有点生疏,但肯定有什么我没看到的。如果你看到错误,请告诉我。谢谢。

最佳答案

您已将duration的类型标识为struct timestruct,而不是struct timespec。只要纠正这个拼写错误,我相信你应该没事的。

关于c - 无法在另一个结构中包含timespec,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45538878/

10-11 23:16