gpt4 book ai didi

c++ - 将 timeval 成员变量复制到整型变量

转载 作者:行者123 更新时间:2023-11-28 02:40:56 28 4
gpt4 key购买 nike

我需要使用两个 integer 参数 p1 和 p2 来表示 timeval 结构。我已将 tv_sec 复制到 p1 并将 tv_usec 复制到 p2。在 32 位 (centos) 中 sizeof(long) = sizeof(int) 因此我能够做到上面所说的事情。

但在 64 位系统中,(sizeof(tv_sec) = 8)。

在 64 位系统中,如何将此 tv_sec 分配给 p1 和 p2,就像 32 位系统一样?

我的代码如下,

#include <iostream>
#include <sys/time.h>
using namespace std;

int main()
{
struct timeval mytime;

gettimeofday(&mytime, NULL);

cout << "tv_sec_1 : " << mytime.tv_sec << endl;
cout << "tv_usec_1 : " << mytime.tv_usec << endl;

int p1 = mytime.tv_sec;
int p2 = mytime.tv_usec;

}

我需要使用结构中的两个自由整数变量传递这些时间信息输出通过它传递给调用函数。我的目的不是修改结果结构。

最佳答案

tv_sectv_usec 的大小会根据您所在的系统而变化。为避免这种情况,您不应使用 int 来存储它们的值。您应该使用适当的类型 - 即 time_tsuseconds_t

您的代码应该是:

time_t p1 = mytime.tv_sec;
suseconds_t p2 = mytime.tv_usec;

有关这方面的信息可以在手册页和信息页中找到。这link有关于正确使用时间函数的信息。特别是他们对 time_tint 有这样的说法:

Is exactly identical to "int" in behaviour. You may assign int values to a time_t variable, and vice-versa, and print time_t values using the %d format, and everything. In the future, either time_t will cease to be identical to int, or the meaning of "int" will change from 4-byte-integer to 8-byte-integer

由于 Mike Seymour 的评论,我修改了我的原始答案以使其更加完整/正确。

关于c++ - 将 timeval 成员变量复制到整型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26021515/

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