【问题标题】:C Beginner: Can't use delay() in a simple C programC 初学者:不能在简单的 C 程序中使用 delay()
【发布时间】:2013-03-01 00:49:49
【问题描述】:

test1.c

#include <stdio.h>

int main(void) {
  printf("test\n");
  delay(1000);
  printf("test2\n");
}

当我尝试编译时...

gcc test1.c -o test1
Undefined symbols for architecture x86_64:
  "_delay", referenced from:
      _main in ccUnw3tY.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

当然,这里有一个关于了解您的库以及链接是什么等方面的课程......我错过了什么?我正在尝试在 OSX 上执行此操作。

【问题讨论】:

  • 下面几乎每个人的回答都对我有帮助。多谢你们。 usleep 效果很好。

标签: c macos compilation delay


【解决方案1】:

C 中没有延迟功能,您必须使用sleepusleep,具体取决于您使用的操作系统。

【讨论】:

  • 现在 - 等一下。 OP 可能正在为另一个系统阅读一本书,然后是 OSX,在这种情况下,很可能有一个名为 delay 的函数。 POSIX 中没有一个(这是 OSX 的主要基础)。
【解决方案2】:

是什么让你觉得有延迟功能。我在 osx 文档中没有看到。有睡眠功能

https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/sleep.3.html

【讨论】:

  • 这是有道理的。问题是我想以毫秒为单位工作,而 sleep(0.01) 需要整整 1 秒才能运行,与 sleep(1) 相同。
  • @Beaon,这就是usleep 的用途。
【解决方案3】:

在 C 语言中用于 unix os 的另一种延迟是睡眠功能: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/sleep.3.html 做类似的事情:

#include <stdio.h>
#include <unistd.h>

int main(void) {
  printf("test\n");
  usleep(1000);
  printf("test2\n");
}

如果你的值是 1000 微秒。

【讨论】:

  • 请注意,usleep 需要 微秒,而不是毫秒。
  • 我认为你的意思是微秒。
  • 已编辑,抱歉我的错误。
【解决方案4】:

延迟函数在 Borland C 编译器中工作。您必须使用 dos.h 头文件才能使用延迟。 MinGW 等其他一些编译器可能不支持此功能。

【讨论】:

    猜你喜欢
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    相关资源
    最近更新 更多