2013-03-01 3 views
0

test1.c

#include <stdio.h> 

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

Когда я пытаюсь скомпилировать ...C Начинающий: Невозможно использовать задержку() в простой программе C

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.

+0

Практически все ответы ниже помогают мне. Спасибо, парни. Улыбка отлично работает. – Beaon

ответ

4

В C нет функции задержки, вы должны использовать sleep или usleep в зависимости от того, на какой ОС вы находитесь.

+1

Теперь - держись на минуту. Возможно, что OP читает книгу для другой системы, а затем OSX, и в этом случае может быть функция с именем 'delay'. В POSIX просто нет ни одного из них, во многом основанного на OSX. –

1

Что заставляет вас думать, что есть функция задержки. Я не вижу его в документах osx. Существует функция сна

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

+0

Так что это имеет смысл. Проблема в том, что я хочу работать в миллисекундах, а sleep (0.01) занимает полные 1 секунду для запуска, так же как и sleep (1). – Beaon

+1

@Beaon, вот что значит 'usleep'. –

1

Альтернативой задержки в C для операционной системы Unix является функция сна: 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 microsecondes.

+1

Просто отметьте, что 'usleep' занимает * микросекунды *, а не миллисекунды. –

+1

Я думаю, вы имеете в виду микросекунды. –

+1

Отредактировано, извините за мою ошибку. – Hulor

0

Функция задержки работает в компиляторе Borland C. Вы должны использовать заголовочный файл dos.h, чтобы использовать задержку. Некоторые другие компиляторы, такие как MinGW, могут не поддерживать это.

Смежные вопросы