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());
我尝试 运行 这个程序在 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());