我正在为 C2000微控制器编写一些代码,我正在尝试使用time.h
计算代码的某些段。但是,当我输入此代码时:
clock_t begin = clock();
它发回了一堆错误。包括一个说:error: function call is not allowed in a constant expression
。但我不相信这是一个不变的表达。
有没有人知道这里会发生什么?
进一步的错误包括:
- output_all_syms --cdebug_asm_data --preproc_with_compile - preproc_dependency =“Example_2802xAdcTempSensor.pp”“../ Example_2802xAdcTempSensor.c” “../Example_2802xAdcTempSensor.c”,第155行:错误:预期为“}” clock_t start = clock();
“../ Example_2802xAdcTempSensor.c”,第155行:错误:函数调用不是 允许持续表达 clock_t start = clock(); ^
提前致谢。
答案 0 :(得分:4)
将其拆分为两行:
clock_t begin;
begin = clock();
编译器希望初始化是一个常量表达式(根据错误消息) - 函数调用不是。
通过像这样拆分,你会说“当程序运行时到达这一点,那是我想要评估这个功能的时间”。一切都会好的。
答案 1 :(得分:0)
事实证明,定义必须移到主循环之外。一旦我这样做,它工作得很好。