static_assert 与 C_ASSERT - 使用哪一个?

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

我有一个有关编译时断言的编码标准的一般 C++/Windows 问题。

static_assert
是 C++11 并支持语言/编译器;
C_ASSERT
winnt.h

的定义

那么,如果我有 C++ Windows 代码 - 我应该使用哪一个?为什么?两者相比,有哪些优势?

我测试了两者 - 错误消息有所不同。

c++ assert static-assert
1个回答
0
投票

根据文档,您应该使用 static_assert 而不是 C_ASSERT

  1. 如果您仅限于C++11,则需要您提供一条消息来解释编译失败的原因。
  2. 如果您不想显示消息,则迁移到 C++17 将为您提供与 C_ASSERT 类似的定义。
  3. 在 C++ 中最好尽可能避免使用宏。
  4. 与宏相比,它更有可能兼容 C++ 的所有不同编译时功能。
  5. 它独立于平台并执行相同的任务
© www.soinside.com 2019 - 2024. All rights reserved.