【发布时间】:2013-11-24 19:26:08
【问题描述】:
我不完全确定为什么这不起作用
void foo(const int a=10){
const int b = 10;
int c[a];
int d[b];
}
我以为我对编译器说 a 是常量 - 我什至告诉它默认值是 10 :)。
他为什么大喊:
1>sum_floats_txt.cpp(105): error C2057: expected constant expression
1>sum_floats_txt.cpp(105): error C2466: cannot allocate an array of constant size 0
1>sum_floats_txt.cpp(105): error C2133: 'c' : unknown size
我知道它告诉我什么,但我不知道如何去做我想做的事: - 函数内部的静态数组大小取决于外部常量 该函数正在计算某些东西并返回执行所花费的时间(在 RTOS 中执行)。
所以我想用与 main 不同的参数来调用这个函数。找出它对哪个参数执行的时间最短。
问题出在静态数组的工作方式上吗?它在编译时必须具有恒定的大小。所以对于不同的静态数组,我必须定义更多。
可能的解决方案是创建更多函数或更多预定义不同大小的静态数组。并且一个接一个地调用它们,但是有成千上万种不同的大小。
我不想进行非自动化迭代以获得最佳参数!可以在执行之前将来自 main 的参数传递给函数吗?
VS2010 + RTX64 2013(应该不是问题) win7 谢谢!
【问题讨论】:
标签: c++ c arrays static constants