初始化itimerspec结构 - memset是一个不错的选择吗?

时间:2013-11-28 22:52:27

标签: c++ struct memset

多年前,我用最少的代码行问了一个关于how to initialize a timespec struct归零状态(nsec和sec等于零)的问题。

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

struct timeval freshStruct = struct timeval){0};

多年以后,我现在想初始化一个itimerspec结构,它在其中有两个specpec结构。一种方法是让我做以下事情:

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

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

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

由于

1 个答案:

答案 0 :(得分:1)

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