【问题标题】:Initializing itimerspec struct - is memset a good choice?初始化 itimerspec 结构 - memset 是一个不错的选择吗?
【发布时间】:2013-11-28 22:52:26
【问题描述】:

几年前,我问了一个关于how to initialize a timespec struct清零 状态(nsec 和 sec 等于零)的问题。

许多回复告诉我不要使用 memset,因为这不是跨平台兼容的,并且可能会出现许多其他问题。于是,我采用了以下方式:

struct timeval freshStruct = struct timeval){0};

多年后,我现在想初始化一个 itimerspec 结构,其中包含两个 timespec 结构。一种方法是让我执行以下操作:

struct itimerspec alarmTimeFormatted;
alarmTimeFormatted.it_interval = (struct timespec){0};
alarmTimeFormatted.it_value = (struct timespec){0};

我看到其他 answers here on StackOverflow 显示使用 memset 在一行中初始化 struct itimerspec。

所以现在我很好奇——itimerspec 结构有什么不同,还是这些只是不好的答案?是否有任何雄辩的方法可以只用一行来初始化外部/内部结构?

谢谢

【问题讨论】:

  • 我会使用itimerspec alarmTimeFormatted = { { 0 } };
  • @Erik -- 太棒了。不知道这会起作用,但它是有道理的。我仍然对 memset 的使用以及何时适用感到好奇。

标签: c++ struct memset


【解决方案1】:

这仍然是不好的做法。 Erik 在 cmets 中给出了一个可能的解决方案,但通常在 C++ 中我们使用构造函数:itimerspec::itimerspec() : it_interval { 0 }, it_value { 0 } { /***/ }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2011-03-24
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多