编译时检查 -fsingle- precision-constant

问题描述 投票:0回答:1

我从已接受的答案中了解到 使 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 gcc floating-point literals static-assert
1个回答
0
投票

C 支持带有消息的静态断言。

#include <assert.h>
static_assert(4 == sizeof 1.0, "Float constants are not correct size");

或者如果您不想包含

_Static_assert
,请使用
assert.h

© www.soinside.com 2019 - 2024. All rights reserved.