gpt4 book ai didi

c++ - 为什么自定义静态断言的实现不会立即静态断言 "true"?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:42:08 25 4
gpt4 key购买 nike

当 C++ 编译器没有内置 static_assert 时,有多种方法可以实现静态断言。这是来自 Windows SDK 的一个示例(另一个著名的来自 Boost):

#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]

我从来没有见过这样的一行:

C_ASSERT(true);

紧接着静态断言实现。

立即测试至少您的静态断言不会在不应该断言的地方断言,这不是合理的吗?

为什么不立即检查它是否断言?

最佳答案

测试是合理的,并且已经通过#including将给定的static-assert定义文件放入某个测试源文件中进行了测试。就像我们制作一个类一样,我们使用示例程序对其进行测试,静态断言在不同的编译器上经过了很好的测试。可能会有一个构建系统,它将在每次修改(比如每次 checkin )时编译一个类似 test_all_asserts.cpp(单元测试)的文件。

您得到的是具有静态断言定义的头文件,而不是 test_all_asserts.cpp 文件。

关于c++ - 为什么自定义静态断言的实现不会立即静态断言 "true"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26803402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com