【发布时间】: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 的使用以及何时适用感到好奇。