Использование time.h на macos для кросс-компилятора

Я хочу скомпилировать следующий код на macos:

struct timeval tv;
int retval = gettimeofday (&tv, NULL);
if (retval == 0)
    TIMEVAL_TO_TIMESPEC (&tv, tp); //here I am getting the error
return retval;

Но я получаю ошибку

ошибка: "TIMEVAL_TO_TIMESPEC" не был объявлен в этой области
TIMEVAL_TO_TIMESPEC (&tv, tp);

Я компилирую с кросс-компилятором Android. Я попытался включить заголовок time.h явно, и он все еще не находит TIMEVAL_TO_TIMESPEC. Как я могу правильно скомпилировать этот код?

1 ответ

Решение

Ниже приведена ссылка, которая объясняет все концепции / стандарты даты и времени из библиотеки GNU C, где придерживаются большинство платформ.

https://www.gnu.org/software/libc/manual/html_node/Date-and-Time.html

Если вы нацелены на кроссплатформенную разработку, лучше придерживайтесь вышеуказанных стандартов.

Как и "nathan", указанный в комментариях, используемый макрос специфичен для некоторых UNIX-подобных систем.

Я быстро проверил библиотеку GNU C для даты и времени (ссылка выше). Я не видел макрос "TIMEVAL_TO_TIMESPEC" где-либо.

Может быть, операционные системы, которые происходят от "Berkeley Software Distribution", могут иметь "TIMEVAL_TO_TIMESPEC", но, насколько я знаю, могут не входить в стандартную библиотеку C GNU.

Поправь меня, если я ошибаюсь.

Другие вопросы по тегам