【发布时间】:2021-10-14 22:40:55
【问题描述】:
我正在关注this tutorial,它让你用 C 语言制作游戏。它使用 windows,我在 linux 上,所以已经存在一些兼容性问题 (conio.h)。我认为这是一个很好的挑战,所以我决定尝试“移植”它。
无论如何,我已经达到了我正在编写整个事情的逻辑的地步。我不能让它每秒刷新数百万次,所以我显然需要让它暂停一下。他们使用了 sleep() 但以某种方式传递了一个浮点数作为参数。谷歌说“不要使用睡眠,使用 usleep()!”手册页说“不要使用 usleep(),使用 nanosleep()!” k ._.
我创建了一个新文件并尝试使用它,但我被卡住了。 "独立声明无效"
#include <time.h>
int main(void)
{
struct timespec ts;
{
long tv_nsec = 10000000;
}
nanosleep(&ts, NULL);
return 0;
【问题讨论】:
-
您的代码缺少一个右括号,但我敢打赌它不在您的代码中。否则,不可能在我的机器上重现你的错误,一个 ubuntu 20
-
ts后面有一个分号,然后您没有使用有效的语法来初始化结构。试试看:struct timespec ts = { .tv_nsec = 10000000L }; -
您当前有一个声明变量
tv_nsec的块,而ts未初始化。 -
请在问题中包含来自编译器的确切错误消息(包括行号)。
-
您可能需要在代码顶部(
#include <time.h>之前)定义一个feature test macro,例如#define _POSIX_C_SOURCE 199309L(值199506L、200112L或200809L应该也可以工作)。