【发布时间】:2013-01-07 16:42:11
【问题描述】:
我正在使用一些 autoconf 的东西,并且有一个包含以下内容的测试:
static int test_array [1 - 2 * !((((float)((int)((float)1.4))) == ((float)1.4)) >= 0)];
这失败了:
错误:“test_array”的存储大小不是恒定的
但是当我将其更改为:
static int test_array [1 - 2 * !((((int)((int)((int)1.4))) == ((int)1.4)) >= 0)];
效果很好。
我对自动工具使用的所有技巧都不是很熟悉,但对我来说,这两种方法的值似乎都应该在编译时确定。
为什么第一个失败了?
【问题讨论】:
-
显然第二个版本可以在编译时解析为常量,但第一个不能。
-
@VladLazarenko 更新以使这一点更加清晰
标签: c gcc floating-point autotools autoconf