clock_gettime:在 Windows 10 的 Visual Studio 中找不到标识符

clock_gettime: identifier not found in Visual Studio in Windows 10

本文关键字:Studio Visual 找不到 标识符 gettime Windows clock      更新时间:2023-10-16

>我尝试运行这个程序,在Visual Studio 2015中借助clock_gettime来执行功能所需的时间。 我遵循了这里的参考:https://www.cs.rutgers.edu/~pxk/416/notes/c-tutorials/gettime.html

#include <iostream>
#include <stdio.h>  /* for printf */
#include <stdint.h> /* for uint64 definition */
#include <stdlib.h> /* for exit() definition */
#include <ctime>
#include<windows.h>
#define _POSIX_C_SOURCE 200809L
#define BILLION 1000000000L
void fun() {
Sleep(3);
}
int main()
{
struct timespec start, end;
int i;
uint64_t diff;
/* measure monotonic time */
clock_gettime(CLOCK_MONOTONIC, &start); /* mark start time */
fun();
clock_gettime(CLOCK_MONOTONIC, &end);   /* mark the end time */
diff = BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
printf("elapsed time = %llu nanosecondsn", (long long unsigned int) diff);
system("pause");
return 0;
}

我尝试在 Linux 中运行,它工作正常。但在Windows中,VS 2015显示错误。

'CLOCK_MONOTONIC' : undeclared identifier 
'clock_gettime': identifier not found

请建议我如何修复此错误或如何在Visual Studio 2015中查找经过的时间。谢谢。

函数clock_gettime((由POSIX定义。Windows不符合POSIX标准。

这是将clock_gettime((移植到Windows的旧帖子的链接。

对于Windows,我会使用std::chrono库。

简单的例子是:

#include <chrono>
auto start = std::chrono::high_resolution_clock::now();
func();
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<float> duration = end - start;
printf("Duration : %f", duration.count());