因公司项目需要,接触并学习WinPcap开发,经网上推荐按照
WinPcap教程:循序渐进教你使用WinPcap
学习,但是在第一章节的时候就遇到了
error C1083: 无法打开包括文件: “sys/time.h”: No such file or directory
这个错误,点击报错提示进入了pcap.h的头文件中,并将错误指向如下的代码:
#if defined(WIN32)
#include <pcap-stdinc.h>
#elif defined(MSDOS)
#include <sys/types.h>
#include <sys/socket.h> /* u_int, u_char etc. */
#else /* UN*X */
#include <sys/types.h>
#include <sys/time.h>
#endif /* WIN32/MSDOS/UN*X */
通过阅读代码,
不难发现sys/time.h是uinx系统下的库文件,而我现在使用的平台是在windows,显然是未指明程序运行的系统。
找到所在,只要指定系统就可以了,我的解决方法如下:
#define WIN32
#include "pcap.h"
即在include的前面加上#define WIN32这个代码即可,指定运行环境。再次编译,未报错。
因公司项目需要,接触并学习WinPcap开发,经网上推荐按照WinPcap教程:循序渐进教你使用WinPcap学习,但是在第一章节的时候就遇到了error C1083: 无法打开包括文件: “sys/time.h”: No such file or directory这个错误,点击报错提示进入了pcap.h的头文件中,并将错误指向如下的代码:#if defined(WIN32) #
fatal
error
C1083
:
无法
打开
包括
文件
:“stdint.h”: No such file or directory
【错误】fatal
error
C1083
:
无法
打开
包括
文件
:“stdint.h”: No such file or directory
【原因】stdint.h是c99标准的头
文件
,vc不支持,所以肯定会提示“No such file or directory”的。
【
解决
方案】
1. 去http://download.csdn.net/download/liubing8609/10046490下载“inttypes.h+stdint.h”压缩
文件
。
2. 解压后把inttypes.h和stdint.h放到vc的include目录就可以了。我安装的是VS2008,安装到的默认位置,因此include的路径就是:C:\Program Files\Microsoft Visual Studio 9.0\VC\include
通过以上方法,成功
解决
编译错误
在涉及跨平台的代码移植中,
sys
/
time
.h经常用到,这里简单列出我移植修改的代码,供大家丢砖头。
本文仅提供visual studio平台下移植代码中常会遇到的
sys
/
time
.h找不到
问题
,相信这两个
文件
,你一定会用得着的。啥也不说了,上代码。
微秒和纳秒
time
_t 这样的结构,是linux的,所以,如果只是调用
time
.h,那么,就没有了
time
_t这样的结构,
所以在仅仅使用 c的
time
.h的时候,需要自己实现定义
time
_t结构:
下面好像不是定义
time
_t,而是 判断是否需要
time
_t 这个结构的宏定义。
#define __need_
time
_t
#define __need_
time
spec
一、UNIX系统时间概念
UNIX操作系统根据计算机产生的年代和应用采用1970年1月1日作为UNIX的纪元时间,1970年1月1日0点作为计算机表示时间的是中间点,将从1970年1月1日开始经过的秒数用一个整数存放,这种高效简洁的时间表示方法被称为“Unix时间纪元”,向左和向右偏移都可以得到更早或者更后的时间。
二、获取当前时间相关函数
需要
time
库函数和local
time
库函数配合使用。
-
time
库函数
time
函数的用途是返回一个值,也就是从1970年1月1日0时0分0秒到现在的秒数。
通常在跨平台编程的时候会遇到这个
问题
。
sys
/
time
.h是linux目录下的
文件
,里面有get
time
ofday这种函数。这个
问题
,可以转化为,如果要在windows下实现任务计时间的功能,该如何做?根据精度要求可选择以下两种方式。
精度要求不高(毫秒级)
头
文件
:windows.h
函数声明:DWORD WINAPI GetTickCount(void)
其中DWORD的类型为无符号长整型,声明如下:
typedef unsigned long DWORD;
功能:返回自设备启动后的毫秒数
用法演示:
time
.h 是 ISO C99 标准日期时间头
文件
。
sys
/
time
.h 是 Linux系统 的日期时间头
文件
。
sys
/
time
.h 通常会包含 #include &amp;lt;
time
.h&amp;gt; 。
编写的代码如果与平台无关的,则需要在代码里 #include &amp;lt;
time
.h&amp;gt;,但这样使用
time
_t 等数据结构的话需要手动
#define __...
在mingw中成功编译好了boost库后, 使用别人写的机器学习库BMRM(https://github.com/funkey/bmrm) 编译模型时出现了fatal
error
:
sys
/
time
s.h:No such file or directory的错误, 一看,就是
sys
/
time
s.h这个
文件
没有...
去mingw的include目录下查看,果然没有
time
s.h这个头
文件
解决“error C3861: “pcap_findalldevs_ex”: 找不到标识符”以及“error C2065: “PCAP_SRC_IF_STRING”: 未声明的标识符”问题
椒是辣椒的椒:
解决error C1083: 无法打开包括文件: “sys/time.h”的问题
仗剑-行天下: