我知道我收到initializer element is not constant
错误,因为我尝试将对clock()
的调用分配给startTime
中的Timer
,而startTime
是静态的(这意味着它的值只能是在编译时已知的值)。
这是我的代码,我需要每隔(*func)
秒调用一次seconds
,并且不确定如何实现此功能,那么什么是做我所需的好方法?
static void Timer(void (*func)(void), int seconds)
{
static clock_t startTime = clock();
if ((startTime - clock() / CLOCKS_PER_SEC) > seconds)
{
startTime = clock();
(*func)();
}
}
更新资料
发表评论的人建议我这样做,但如果这样做,开头的
if
是多余的: static clock_t startTime = (clock_t) -1;
if (startTime == -1) startTime = clock();
else if ((startTime - clock() / CLOCKS_PER_SEC) > seconds)
{
startTime = clock();
(*func)();
}
最佳答案
static void Timer(void (*func)(void), int seconds)
{
static clock_t startTime = 0;
if(!startTime)
startTime = clock();
if ((startTime - clock() / CLOCKS_PER_SEC) > seconds)
{
startTime = clock();
(*func)();
}
}
关于c - 错误: initializer element is not constant (how can I implement this?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43968611/