Как переслать объявить clock_gettime ()

я использую 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);

-1

Решение

Вы должны объявить библиотечные функции, включив заголовок, который содержит объявление. time.h в этом случае. Написание декларации самостоятельно подвержено ошибкам. Например, вы объявили первый аргумент как int который не обязательно совпадает с clockid_t,

Понятно, что кто-то другой уже включил time.h

Вы никогда не должны предполагать, что «кто-то еще» включил заголовки, которые вам нужны. Всегда включайте каждый заголовок, который вы используете.

РЕДАКТИРОВАТЬ:

Да. я уже включил time.h

Если это так, то кажется, что ваш time.h не объявляет clock_gettime, Вам нужно будет дважды проверить, что ваша библиотека c поддерживает POSIX.

следовательно, эта ошибка ожидается

Если вы включите заголовок, то это не ожидал, что clock_gettime не объявлено Если ваша библиотека c не поддерживает POSIX.

1

Другие решения

Не имеет смысла объявлять библиотечные функции самостоятельно. clock_gettime() является объявлено в time.h, Я полагаю, что «удар» вас здесь glibc только делает стандартные функции C видимыми по умолчанию. Для всего остального (например, например, POSIX в случае clock_gettime()), вы должны определить соответствующие макросы, чтобы фактически получить объявление. gcc делает это для некоторых макросов автоматически, в зависимости от выбранного режима (например, -std=gnu99).

В вашем случае просто добавив

#define _POSIX_C_SOURCE 199309L

до любой включить и убедиться, time.h включен, должен сделать.

(см. раздел «Макросы тестирования функций» на странице руководства)

2

По вопросам рекламы [email protected]