【发布时间】:2018-07-20 17:40:43
【问题描述】:
我想将log10(2) 的结果赋值给一个常量。
我做到了
const float f = log10(2);
它告诉Initializer element is not a constant expression。我还定义了一个新函数
const float Log10(float f) {
return (const float)log10(f);
}
但是编译器在抱怨(为什么不呢?我也在使用log10 函数)Type qualifiers are ignored on function's return type。这是否意味着没有可以返回常量的函数?那我该怎么做呢?
编辑:
由于有些人有疑问,我包含了math.h头文件并与-lm链接,但是我在gcc中使用了-pedantic选项,它不接受它。
【问题讨论】:
-
你链接到
-lm(数学库)了吗? -
如果这不是您试图找到答案的一般问题,您可以硬编码
log10(2)的值。const float f = 0.30102999566; -
在哪里你定义了
const float f?它只能用作局部变量。 -
@Garmekain 这就是我写的。你不能用函数的返回值给全局变量赋值,不管它是不是
const。 -
我不知道。我好像是个怪人。我怀疑存在中间函数调用这一事实将始终阻止分配给全局——即使返回本身将是一个常量值。看起来全局类型将丢弃
const限定符并默认为type单独。但是,它确实允许全局返回const合格的指针。
标签: c function constants return-value return-type