fatal error C1083 无法打开包括文件 “sys/time.h” No such file or directory

简介: fatal error C1083 无法打开包括文件 “sys/time.h” No such file or directory

通常在跨平台编程的时候会遇到这个问题。sys/time.h是linux目录下的文件,里面有gettimeofday这种函数。这个问题,可以转化为,如果要在windows下实现任务计时间的功能,该如何做?根据精度要求可选择以下两种方式。

精度要求不高(毫秒级)

头文件:windows.h

函数声明:DWORD WINAPI GetTickCount(void)

其中DWORD的类型为无符号长整型,声明如下:

typedef unsigned long DWORD;

功能:返回自设备启动后的毫秒数

用法演示

DWORD start,end;
start = GetTickCount();//vs2019会建议采用GetTickCount64()函数
// compute task
end = GetTickCount();//同上
printf("elapse time = %f\n",1.0*(end-start);
-----------------------------
输出:
elapse time = 3016.000000ms

精度要求高(微秒级)

头文件:windows.h

函数声明:BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)

BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)

其中LARGE_INTEGER 的类型声明如下:

typedef union_LARGE_INTEGER
{
    struct
    {
        DWORD LowPart;
        LONG HightPart;
    };
    LONG LONG QuadPart;
}LARGE_INTEGER;

功能:第一个函数获得的是CPU从开机依赖执行的时钟周期数,第二个函数用于获取电脑的时钟周期。

用法演示

LARGE_INTEGER nun;
long long start,end,freq;
QueryPerformanceFrequency(&num);
freq = num.QuadPart;
QueryPerformanceCounter(&num);
start = num.QuadPart;
// coumpute task
QueryPerformanceCounter(&num);
end = num.QuadPart;
printf("elapse time = %f\n",(end-start)*1000.0/freq);
-----------------------------
输出:
elapse time = 3009.578000ms

总结

附上完整演示版本:

#include <iostream>
#include <windows.h>
void AComputeTask()
{
  Sleep(3000);
  int c = 1 + 2;
}
int main()
{
#if 0
  DWORD start, end;
  start = GetTickCount64();
  AComputeTask();
  end = GetTickCount64();
  printf("elapse time = %fms\n", 1.0*(end - start));
#else
  LARGE_INTEGER num;
  long long start, end, freq;
  QueryPerformanceFrequency(&num);
  freq = num.QuadPart;
  QueryPerformanceCounter(&num);
  start = num.QuadPart;
  AComputeTask();
  QueryPerformanceCounter(&num);
  end = num.QuadPart;
  printf("elapse time = %fms\n", (end - start) * 1000.0 / freq);
#endif
  return 0;
}

对比两个版本,可以查看第二个版本可以精确到微秒。如果对精确度没有要求,可以任意选择一种计时方式,替代linux下的sys/time.h中的方法。

本文参考博文https://blog.csdn.net/fz_ywj/article/details/8109368,修改了部分代码,对原作者表示感谢。

相关文章
|
编解码 C++ Python
成功解决LINK : fatal error LNK1181: 无法打开输入文件“avdevice.lib” error: command 'D:\\Program Files (x86)\\Micr
成功解决LINK : fatal error LNK1181: 无法打开输入文件“avdevice.lib” error: command 'D:\\Program Files (x86)\\Micr
成功解决LINK : fatal error LNK1181: 无法打开输入文件“avdevice.lib” error: command 'D:\\Program Files (x86)\\Micr
|
12月前
|
Python
ERROR: file or directory not found: xx.py
​ 1、问题出现原因 在vscode中已导入pytest框架,做自动化demo小测试,运行Python文件一直出现如题错误,截图如下: ERROR: file or directory not found: xx.py  2、解决办法 1)直接把该文件移到当前主目录下,放在PYTHON-STUDY下 2)VSCode中右键tuopan.py文件,选择[在集成终端中打开],或者通过CD命令进入到tuopan.py文件所在目录 然后输入以下命令即可: 注:上述命令不是换行,在d:/前有空格 ,第一行信息为python所在安装路径,空格后的换行为运行的python文件的所在路径  
141 0
|
12月前
fatal error: jni.h: No such file or directory
fatal error: jni.h: No such file or directory
143 0
ftok info: No such file or directory
ftok info: No such file or directory
181 0
fatal error C1083: 无法打开包括文件:“fenv.h”: No such file or directory
fatal error C1083: 无法打开包括文件:“fenv.h”: No such file or directory
181 0
|
Linux C语言 C++
VS编译出错:fatal error C1083: 无法打开包括文件:“stdbool.h”: No such file or directory
VS编译出错:fatal error C1083: 无法打开包括文件:“stdbool.h”: No such file or directory
681 0
conftest.c:93:10: fatal error: srtp/srtp.h: No such file or directory
conftest.c:93:10: fatal error: srtp/srtp.h: No such file or directory
139 0
fatal error: X11/extensions/Xvlib.h/Xdbe.h: No such file or directory
fatal error: X11/extensions/Xvlib.h/Xdbe.h: No such file or directory
140 0
autoreconf: failed to run autopoint: No such file or directory
autoreconf: failed to run autopoint: No such file or directory
206 0
|
开发工具 Windows
“basetsd.h”: No such file or directory,LINK : fatal error LNK1158: 无法运行“rc.exe”报错
无法打开包括文件: “basetsd.h”: No such file or directory 解决方案
“basetsd.h”: No such file or directory,LINK : fatal error LNK1158: 无法运行“rc.exe”报错