4

我有一个要移植到 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正确的,如果是这样,我在哪里可以得到struct timevalMicrosoft Visual Studio 2008 中的定义?

4

2 回答 2

5

标题winsock2.h填充将被引入,struct timeval因为它在调用中使用,例如select.

于 2011-11-28T19:48:06.250 回答
3

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

于 2011-11-28T19:46:10.317 回答