Вызов `clock ()` дает ошибку: неопределенная ссылка на `_times '

Я пытаюсь использовать функцию clock() в своем коде на C ++, но она не работает. Я пробовал добавить #include <time.h> или #include <ctime>, но это не помогло. Я использую Atmel Studio.

#include <time.h>

int main(void)
{
        clock_t myClock = clock();
}

Ошибки быть не должно, но я получаю следующие сообщения об ошибках:

recipe for target 'SAMS70.elf' failed
undefined reference to `_times'
ld returned 1 exit status

Кто-нибудь знает, почему это может происходить?


person Jonathan Lane-Smith    schedule 18.09.2019    source источник
comment
Возможно, вам нужно сделать ссылку на конкретную статическую библиотеку.   -  person Peter L.    schedule 18.09.2019
comment
clock() часто реализуется поверх clock_gettime(CLOCK_PROCESS_CPUTIME_ID) - так что ищите и это.   -  person Ted Lyngmo    schedule 18.09.2019
comment
@TedLyngmo, скорее всего, OP закончится с тем же результатом. Их реализация на C ++, кажется, делает все правильно, но лежащего в основе _times просто нет, потому что MCU не может предоставить эту информацию.   -  person SergeyA    schedule 18.09.2019
comment
@SergeyA Вы, наверное, правы. Хотя попробовать стоит. Не занимает много секунд (!) :-)   -  person Ted Lyngmo    schedule 18.09.2019
comment
clock() имеет зависимости от оборудования, поэтому обычно требуется реализовать или переопределить нефункциональную реализацию собственным кодом, используя доступное оборудование для синхронизации на вашей цели. Как правило, это очень простая функция для реализации с использованием встроенного таймера или прерывания sysclk. Связанные stackoverflow.com/questions/46335353/.   -  person Clifford    schedule 19.09.2019


Ответы (1)


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

person SergeyA    schedule 18.09.2019