将api从Linux移植到Visual Studio 2008

Porting time APIs from Linux to Visual Studio 2008

本文关键字:Visual Studio 2008 api Linux      更新时间:2023-10-16

我有一个应用程序,我正在移植到Microsoft Visual Studio 2008,它在Linux上构建和运行良好。

我对时间例程有麻烦,我的Linux代码看起来像这样:

#include <sys/types.h>
#include <sys/time.h>
typedef long long Usec;
inline Usec timevalToUsec(const timeval &tv)
{
  return (((Usec) tv.tv_sec) * 1000000) + ((Usec) tv.tv_usec);
}

但是编译器在sys/time.h头文件上失败了:

fatal error C1083: Cannot open include file:
      'sys/time.h': No such file or directory

如果我将包含更改为time.h,我会得到一个不同的错误,没有定义timeval:

error C4430: missing type specifier - int assumed.
      Note: C++ does not support default-int

这是由于没有定义timeval

包括time.h而不是sys/time.h正确,如果是这样,我在哪里得到微软Visual Studio 2008中struct timeval的定义?

winsock2.h头填充将拉入struct timeval,因为它在select调用中使用。

存在,只是不在"sys/time.h"中。有趣的是,Timeval在Winsock2.h中。