是否有满足 C99 标准的 static_assert 替代品?

2024-01-04

我一直在尝试实现类似的方法static_assert这是在 C++11 标准中定义的。主要问题是C++编译器如何编写传递给的文本消息static_assert as a const char*?我可以让编译器写一条消息,比如A_is_not_POD。这就是我所拥有的:

#define MY_STATIC_ASSERT(condition, name)         \
   typedef char name[(condition) ? 1 : -1]; 

但如果让编译器写出类似的东西那就太好了"Error: A is not POD."有什么建议么?


不确定我理解问题,但 C11 有_Static_assert(condition, errmessage)。在 C99 中缺少此功能,但根据编译器的不同,可以进行模拟。例如。对于 gcc(不幸的是 clang 不支持属性(错误))

#define MY_STATIC_ASSERT(cnd, descr) ({ \
    extern int __attribute__ ((error("static assert failed: (" #cnd ") (" #descr ")"))) \
               compile_time_check(void); \
    ((cnd) ? 0 : compile_time_check()), 0; \
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有满足 C99 标准的 static_assert 替代品? 的相关文章

  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • TFS 2017:在同一 TFS 服务器上克隆/复制集合

    我想在同一个 TFS 服务器上创建我们的生产集合的克隆 副本 以用作沙箱 开发环境 恢复集合的备份并重命名它很容易 但我知道当我尝试附加集合时会出现 GUID 冲突 可能还有其他冲突 有没有办法解决 或者我只需要购买一台带有单独 TFS 实
  • 对齐 OCR 文本

    我正在根据历史记录创建一个数据库 这些历史记录是我从书籍中拍摄的页面 100K 页 在对每个页面进行 OCR 之前 我编写了一些 python 代码来进行一些图像处理 由于这些书中的数据没有采用格式良好的表格 因此我需要将每个页面分为行和列
  • 在java中使用外部硬件组件?

    我谈论的是可以通过某些端口或其他方式从外部连接到计算机系统的组件 而不是属于计算机本身的一部分或外围设备的任何组件 实际上 正在从事一个大学项目 用于控制铁路道口的交通灯和围栏 我有 Java 知识 但我不知道如何让交通灯和吊杆栏杆在基于
  • Swagger-PHP 用于为 Swagger-UI 生成 JSON 文件

    我正在尝试使用 Swagger PHP 生成 JSON 文件 以便我可以将它与 Swagger UI 一起使用来自动记录文档 我尝试了链接 https github com zircote swagger php https github
  • 在 C 中生成正弦信号而不使用标准函数

    我想在 C 语言中生成正弦信号 而不使用标准函数 sin 来触发 LED 亮度的正弦形变化 我的基本想法是使用具有 40 个点和插值的查找表 这是我的第一个方法 const int sine table 40 0 5125 10125 14
  • Matlab 中大型非稀疏矩阵的高效运算

    我需要在 Matlab 中操作大的 3 维非稀疏矩阵 使用纯矢量化会带来较长的计算时间 所以 我尝试将操作分成10个块 然后解析结果 当我看到纯矢量化不能很好地缩放数据大小时 我感到很惊讶 如下图所示 我提供了这两种方法的示例 Parame
  • 如何处理react-intl中的“丢失消息”错误?

    我正在使用 React intl 版本 2 4 0 对于某些翻译 我在控制台中收到 丢失消息 错误 有什么办法可以在不升级到 v3 的情况下处理它们吗
  • 如何在 XML 代码中使用“&”字符?

    我想使用 字符 但 Visual Studio 抛出异常 怎么得写这个 替换任何 with amp 它将在 XML 中正确加载
  • 如何在ubuntu上下载并使用python? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我最近购买了一台76系统的笔记本电脑 这是我第一次接触ubuntu操作系统 终端说我目前有版本 2 7 5 我不确定加号是什么意思 我的第
  • 将exe文件放入构建输出目录

    使用 WinSCP NET assembly 从 C 程序获得 SFTP 支持 在 Visual Studio 中构建我的项目时 我想WinSCP exe and WinSCPnet dll被复制到bin输出目录 WinSCPnet dll
  • ReadDirectoryChangesW 和 GetOverlappedResult

    我正在打电话ReadDirectoryChangesW异步监视后台线程中的目录更改 这是目录 basePath 打开并启动 阅读 线程 m hDIR CreateFileW basePath FILE LIST DIRECTORY GENE
  • 如何在Python中从现有的超类类型对象实例化子类类型变量

    我遇到了一种情况 我扩展了一个具有多个属性的类 class SuperClass def init self tediously many attributes assign the attributes like self attr at
  • 在用户等待时处理大量数据的最佳实践(在 Rails 中)?

    我有一个小书签 使用时会将当前浏览器页面上的所有 URL 提交到 Rails 3 应用程序进行处理 我正在使用的幕后Typhoeus https github com pauldix typhoeus检查每个 URL 是否返回 2XX 状态
  • NoAutomaticTrigger 类型作业的连续 Azure WebJob 停止时的通知

    All 我正在将现有辅助角色代码迁移到 Azure Web 作业 我正在尝试使用 WebJob SDK 1 0 以便与 Azure 网站完全集成 我的困难是 JobHost 不能很好地处理超出其通常的基于属性的调用选项 队列 Blob 等
  • C++ 中的静态鸭子类型

    C 对于模板参数给出的类型有某种鸭子类型 我们不知道什么类型DUCK1 and DUCK2会的 但只要他们可以quack 它将编译并运行 template
  • 使用 Process.Start 在 C# 中打开 Excel 文件

    我正在尝试使用单击按钮打开 Excel 文件 由于某种原因它不起作用 我已经尝试了几件事 有什么想法为什么他们不工作吗 方法1我试过了 这将打开文件管理器 但不会打开正确的文件 它肯定使用了正确的文件路径并且该文件确实存在 private
  • 创建新的 GitHub 帐户后无法从私人存储库克隆/获取

    我是一名使用 git 和 SourceTree 的自由开发人员 在过去的几个月里 我一直在为一个拥有私有 GitHub 存储库的特定客户工作 在那段时间里我一直在使用 SourceTree 将更改拉取和推送到 GitHub 我有另一个客户希
  • Bootstrap3 轮播 - 随机选择下一张幻灯片

    我有点难住了 我是 Javascript 新手 但当我用 Google 搜索时 通常会在网上找到很多很棒的帮助 这次我能想到的最好的帮助就在这里 但文档说发布一个新问题比偏离原来的帖子更好 所以 这是我的问题 我正在使用 Bootstrap
  • Wordpress 数据库输出 - 删除 SQL 注入转义

    我在使用 wbdb 时遇到问题 当我使用 wpdb gt insert 或 wpdb gt update 插入或更新数据时 SQL 注入保护实际上会将 插入数据库 并且在输出该信息时 它会附带 SQL 转义 即 我的价值已转义 我知道必须有
  • 是否有满足 C99 标准的 static_assert 替代品?

    我一直在尝试实现类似的方法static assert这是在 C 11 标准中定义的 主要问题是C 编译器如何编写传递给的文本消息static assert as a const char 我可以让编译器写一条消息 比如A is not PO