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

clock_gettime: identifier not found in Visual Studio in Windows 10

我尝试 运行 这个程序在 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 nanoseconds\n", (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 的旧 post 的 a link

对于 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());