я использую clock_gettime()
в cpp
проект.
Но это дает clock_gettime()
не заявлено в этой области ошибка.
Понятно, кто-то еще уже включил time.h
следовательно, эта ошибка ожидается.
Но как мне переслать объявить clock_gettime()
?
Я старался int clock_gettime(int,struct timespec *)
?
http://linux.die.net/man/3/clock_gettime, здесь декларация:
int clock_gettime(clockid_t clk_id, struct timespec *tp);
Вы должны объявить библиотечные функции, включив заголовок, который содержит объявление. time.h
в этом случае. Написание декларации самостоятельно подвержено ошибкам. Например, вы объявили первый аргумент как int
который не обязательно совпадает с clockid_t
,
Понятно, что кто-то другой уже включил time.h
Вы никогда не должны предполагать, что «кто-то еще» включил заголовки, которые вам нужны. Всегда включайте каждый заголовок, который вы используете.
РЕДАКТИРОВАТЬ:
Да. я уже включил time.h
Если это так, то кажется, что ваш time.h
не объявляет clock_gettime
, Вам нужно будет дважды проверить, что ваша библиотека c поддерживает POSIX.
следовательно, эта ошибка ожидается
Если вы включите заголовок, то это не ожидал, что clock_gettime
не объявлено Если ваша библиотека c не поддерживает POSIX.
Не имеет смысла объявлять библиотечные функции самостоятельно. clock_gettime()
является объявлено в time.h
, Я полагаю, что «удар» вас здесь glibc
только делает стандартные функции C видимыми по умолчанию. Для всего остального (например, например, POSIX
в случае clock_gettime()
), вы должны определить соответствующие макросы, чтобы фактически получить объявление. gcc
делает это для некоторых макросов автоматически, в зависимости от выбранного режима (например, -std=gnu99
).
В вашем случае просто добавив
#define _POSIX_C_SOURCE 199309L
до любой включить и убедиться, time.h
включен, должен сделать.
(см. раздел «Макросы тестирования функций» на странице руководства)