是否有满足 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 替代品? 的相关文章

  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • 是否存在指向不同类型的指针具有不同大小的平台?

    C 标准允许指向不同类型的指针具有不同的大小 例如sizeof char sizeof int 是允许的 但是 它确实要求如果将指针转换为void 然后转换回其原始类型 它必须与其原始值进行比较 因此 从逻辑上来说 sizeof void
  • 为什么'enable_if'不能用于禁用这里声明

    include
  • C# 开源 NMEA 解析器 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 开源 NMEA 解析器 嗯 我自己也不熟悉 但是一些快速搜索显示了一个代码项目 htt
  • 将表(行)与 OpenXML SDK 2.5 保持在一起

    我想在 Word 文档中生成多个表 每行 2 行 但我想将这两行保留在一起 如果可能的话 new KeepNext 第一行不起作用 new KeepNext 第一行的最后一段不起作用 new CantSplit 放在桌子上不起作用 在所有情
  • 获取 boost Spirit 语法中的当前行

    我正在尝试使用 boostspirit 获取正在解析的文件的当前行 我创建了一个语法类和结构来解析我的命令 我还想跟踪在哪一行找到命令并将其解析到我的结构中 我将 istream 文件迭代器包装在 multi pass 迭代器中 然后将其包
  • 使用查询表达式对 List 进行排序

    我在使用 Linq 订购这样的结构时遇到问题 public class Person public int ID get set public List
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • 析构函数中的异步操作

    尝试在类析构函数中运行异步操作失败 这是代码 public class Executor public static void Main var c1 new Class1 c1 DoSomething public class Class
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • Project Euler #8,我不明白我哪里出了问题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在做项目欧拉第八题 https projecteuler net problem 8 其中我得到了这个大得离谱的数字 7316
  • 使用 GCC 生成可读的程序集?

    我想知道如何使用GCC http en wikipedia org wiki GNU Compiler Collection在我的 C 源文件中转储机器代码的助记符版本 这样我就可以看到我的代码被编译成什么 你可以使用 Java 来做到这一
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • 如何在 winforms 应用程序的主屏幕显示之前显示欢迎屏幕?

    我想在应用程序启动时加载欢迎屏幕 然后用户单击欢迎屏幕上的按钮 然后关闭欢迎屏幕 最后显示主屏幕 static void Main startup method being called Application EnableVisualSt
  • LINQ 中的“from..where”或“FirstOrDefault”

    传统上 当我尝试从数据库中获取用户的数据时 我使用了以下方法 在某种程度上 DbUsers curUser context DbUsers FirstOrDefault x gt x u LoginName id string name c
  • 为什么匹配模板类上的部分类模板特化与没有模板匹配的另一个部分特化不明确?

    这个问题可能很难用标题中的句子来描述 但这里有一个最小的例子 include
  • 使用未分配的局部变量

    我遇到了一个错误 尽管声明了变量 failturetext 和 userName 错误仍然出现 谁能帮帮我吗 Use of Unassigned local variable FailureText Use of Unassigned lo

随机推荐

  • 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