多年前,我用最少的代码行问了一个关于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结构有什么不同,或者这些只是错误的答案?是否有任何雄辩的方法只用一行初始化外/内结构?
由于
答案 0 :(得分:1)
这仍然是不好的做法。 Erik在评论中提供了一个可能的解决方案,但通常在C ++中我们使用构造函数:itimerspec::itimerspec() : it_interval { 0 }, it_value { 0 } { /***/ }