gpt4 book ai didi

c - 将c程序从linux迁移到windows

转载 作者:行者123 更新时间:2023-11-30 17:27:02 24 4
gpt4 key购买 nike

我在将 Linux 上编写的工作程序迁移到 Windows 时遇到问题。我清理了一下它,但是下面的代码片段总是给我一个错误。

代码片段:

...
struct timeval mytime;
gettimeofday(&mytime, (struct timezone*)0);
tseconds = (double) (mytime.tv_sec + mytime.tv_usec*1.0e-6);
...

堆栈跟踪:

Error   1   error C2079: 'mytime' uses undefined struct 'timeval'
Warning 2 warning C4013: 'gettimeofday' undefined; assuming extern returning int
Error 3 error C2224: left of '.tv_sec' must have struct/union type
Error 4 error C2224: left of '.tv_usec' must have struct/union type
5 IntelliSense: incomplete type is not allowed
6 IntelliSense: incomplete type is not allowed
7 IntelliSense: incomplete type is not allowed

如果有人能帮助我,我将非常感激!

最佳答案

@Dave 感谢我在下面的代码片段中添加的链接:

const __int64 DELTA_EPOCH_IN_MICROSECS = 11644473600000000;
struct timeval2 {
__int32 tv_sec;
__int32 tv_usec;
};
struct timezone2
{
__int32 tz_minuteswest; /* minutes W of Greenwich */
bool tz_dsttime; /* type of dst correction */
};
int gettimeofday(struct timeval2 *tv/*in*/, struct timezone2 *tz/*in*/)
{
FILETIME ft;
__int64 tmpres = 0;
TIME_ZONE_INFORMATION tz_winapi;
int rez = 0;

ZeroMemory(&ft, sizeof(ft));
ZeroMemory(&tz_winapi, sizeof(tz_winapi));

GetSystemTimeAsFileTime(&ft);

tmpres = ft.dwHighDateTime;
tmpres <<= 32;
tmpres |= ft.dwLowDateTime;

/*converting file time to unix epoch*/
tmpres /= 10; /*convert into microseconds*/
tmpres -= DELTA_EPOCH_IN_MICROSECS;
tv->tv_sec = (__int32) (tmpres*0.000001);
tv->tv_usec = (tmpres % 1000000);


//_tzset(),don't work properly, so we use GetTimeZoneInformation
rez = GetTimeZoneInformation(&tz_winapi);
tz->tz_dsttime = (rez == 2) ? true : false;
tz->tz_minuteswest = tz_winapi.Bias + ((rez == 2) ? tz_winapi.DaylightBias : 0);

return 0;
}

并且代码构建正确:)!

关于c - 将c程序从linux迁移到windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com