我从已接受的答案中了解到 使 C 浮点文字浮点(而不是双精度),这是讨论, GCC 提供编译器标志
-fsingle-precision-constant
来强制浮点文字为单精度而不是默认的双精度。
虽然这可能有其优点和缺点,但有没有办法(除了始终使用
f
后缀)来确保打算用 -fsingle-precision-constant
编译的代码不会被错误解释?
我想出了这个,
int assert_float32_literals[1/(4 == sizeof 1.0)];
哪种(有点)有效:
error: variably modified 'assert_float32_literals' at file scope
但是有没有更明确的方法并提供清晰的错误消息?
C 支持带有消息的静态断言。
#include <assert.h>
static_assert(4 == sizeof 1.0, "Float constants are not correct size");
或者如果您不想包含
_Static_assert
,请使用 assert.h
。