C++:编译时断言浮点数的值
C++ : compile time assert the value of a floating point number
我正在使用C++ 11。我有一个浮点数。
float some_float = 3.0;
现在我想编译时间检查这个数字是否大于某个值。假设我想编译时间断言some_float
大于1.0
。我正在尝试这个:
static_assert(some_float > 1.0);
但是,它错误地抱怨,
error: static_assert expression is not an integral constant expression
static_assert(some_float > 1.0);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
问题:
我做错了什么?
如何在编译时断言some_float
设置为高于 1.0
的值?
some_float
必须constexpr
constexpr float some_float = 3.0;
如果你简单地将some_float
定义为float
,则可以在运行时工作的assert()
中使用,而不是在static_assert()
中,即检查编译时。
此外:在 C++11 中,错误消息需要一个字符串
static_assert ( some_float > 1.0f , "!" );
//..................................^^^ error message
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 使用提升将数据从 PyObject 复制到浮点数 *
- 使用浮点数和双精度数的非常小数字的数学
- 使用英特尔内联函数将打包的 8 位整数乘以浮点数向量
- 如何在 c++ 中将小数点后两位数的浮点数分配给另一个浮点数
- 返回浮点数的小数位数
- txt 文件中浮点数的最大和最小值
- 为什么 std::cout 打印浮点数、双精度和长双精度到相同的小数精度?
- 将浮点数转换为无符号字符数组并打印出来
- 如何将时间字符串 (M:SS) 转换为浮点数
- 如何将浮点数(*)[6]转换为浮点**类型?
- C++将浮点数乘以分数
- 如何将浮点数转换为uint8_t?
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 如何在C++(Arduino)中将浮点数组转换为字节数组
- 在数学上将浮点数四舍五入到 N 位小数
- Cython通过浮点数的最快方式,用于高频控制回路
- C++:编译时断言浮点数的值