如何添加静态断言来检查变量是否是静态的?

2024-01-02

我有一个仅适用于静态局部变量的宏(因为它使用内联汇编表示法来提取有关变量的数据)。我需要一种方法来强制宏的输入确实是静态局部变量:

correct:

func f()
{
    static int x;
    my_macro(x);
}

不正确:

func f()
{
    int x;
    my_macro(x);
}

我使用 GCC 来处理 C(没有 C++)。


您可以使用以下技巧:

#define ASSERT_LOCAL_STATIC(v) static void *p_ ## v = &v

void fn()
{
    int nonstatic_var = 0;
    static int static_var = 0;

    ASSERT_LOCAL_STATIC(static_var);
    ASSERT_LOCAL_STATIC(nonstatic_var);
}

对于非静态变量,GCC 会发出错误“初始化元素不是常量”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何添加静态断言来检查变量是否是静态的? 的相关文章

  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • JavaFX 中的 Platform.runLater 和任务

    我一直在对此进行一些研究 但至少可以说我仍然很困惑 谁能给我一个具体的例子来说明何时使用Task以及何时使用Platform runLater Runnable 到底有什么区别呢 何时使用这些有什么黄金法则吗 如果我错了 请纠正我 但这两个
  • 带有 NSAttributedString 的简单 UIAlertView

    我正在寻找一种简单的使用方法NSAttributedString有一个非常简单的消息框 类似于 NSString new item NSString stringWithFormat span span MOTD HTML String d
  • 在STL容器中查找迭代器的索引 - 需要模板函数

    我想要一个具有如下接口的函数 template
  • Rails 3/jquery - 使用 ajax 渲染部分选项卡

    使用 Rails 3 和 jquery 我尝试为我的 post show 页面设置一个简单的 3 选项卡导航 在单击时将 post comments 和 相关部分渲染到视图中 目前 这些部分没有自己的控制器操作 处理这些 ajax 调用的最
  • SQL Server 2008 Management Studio 删除表警告?

    为什么 SQL Server 2008 总是警告需要删除表来重命名列 我的印象是这不是必需的 除非它是一把钥匙 如果我将列从空更改为非空 即使它不是关键字段 它也会删除表和所有关系 如果您在设计器中编辑表格 那么设计器就是迂腐的 尝试更改
  • 使用 NSAttributedString 更改字符串颜色?

    我有一个用于调查的滑块 它根据滑块的值显示以下字符串 非常差 差 好的 好 非常好 这是滑块的代码 IBAction sliderValueChanged UISlider sender scanLabel text NSString st
  • 如何将 Buefy 的 Dialog 组件与用户提供的内容一起使用并确保 XSS 安全

    Buefy 的 Dialog 组件需要一个message道具 字符串 根据文档 该字符串可以包含 HTML 我想在字符串中使用模板值 但当然应该是 XSS 安全的 当前不安全的示例 这是不安全的 因为this name是不安全的 我可以使用
  • AngularJS:我应该如何更新我的手表侦听器内已解决的承诺的属性?

    考虑这个笨蛋 http plnkr co edit fAWYSKeQAdv9GuT56lon p preview 在我的手表侦听器内部 我想更新已解决的承诺的属性 修改数值是否正确 v财产 如果没有 那我该怎么办 这是 HTML
  • 如何在 numpy 中向量化 linspace [重复]

    这个问题在这里已经有答案了 我想对数组进行 linspace 操作 就像下面这样 a np array 2 4 6 b vectorize np array 0 a 5 我想要返回看起来像这样的东西 b 0 0 5 1 1 5 2 0 1
  • 控制Azure服务总线消息监听器在Spring Boot中启动或停止从主题或队列监听

    我想要实现什么 用于启动 停止从队列 主题接收消息的 Azure 服务总线消息侦听器 下面是详细的解释 目前 我已将 Azure 服务总线集成到我的应用程序中 一旦 Spring Boot 应用程序启动 我们就会监听消息 现在我想修改这个逻
  • 如何使用 mvvm-light Messenger 接收 DialogResult

    我正在尝试使用mvvm 轻信使功能在我的视图中打开自定义确认密码对话框 由我的视图模型中的命令触发 我想我明白了Messenger Default Register and Messenger Default Send 但是如何将对话框结果
  • SSL证书-禁用axios和react中的验证

    我正在尝试使用 axios 在我的 React 应用程序中使用 API 该 API 通过带有自签名证书的 HTTPS 运行 到目前为止 我在连接时遇到以下错误 net ERR INSECURE RESPONSE bundle js 6525
  • 更新 hasone 关系表现得很奇怪 (cakephp)

    我有一个现有的展示柜hasOne画廊 Gallery 已经存在并带有foreignKeyshowcase id设置为适当的值 图库有一个文本字段 我尝试通过展示控制器更新该文本字段 我得到的结果是一个额外的画廊条目 沿着原始条目 而不是原始
  • 在逗号分隔的 sql 字符串中的每个单词周围加引号?

    我有一个像这样的字符串 one two three 我怎样才能让它看起来像这样 one two three 所以我可以在 IN 子句中使用它吗 只需使用 REPLACE 方法即可 将逗号替换为所需的字符串 DECLARE TestData
  • 用最少的内存连接 Numpy 数组

    不是我有50GB的数据集保存为h5py 里面是一个字典 字典包含从 0 到 n 的键 值是具有相同形状的 numpy ndarray 3 维 例如 字典 0 np array 我想连接所有这些 np 数组 代码如下 sample np co
  • C# 事件锁定

    C 中是否有类似于 lock 的构造 但在从事件处理程序调用时起作用 即在处理后续事件之前等待代码块完成 我遇到的问题是 lock 仅阻止其他线程获取该对象的锁 但是如果调用同一线程上的事件处理程序 则锁块内代码的执行将被中断 并且新事件是
  • config/environments/development.rb 中“consider_all_requests_local”的用途?

    这个 Rails 配置设置的目的是什么 config action controller consider all requests local true 默认情况下它设置为 trueconfig environments developm
  • Android 中的间谍/监视变量 (Eclipse)

    我是使用 Eclipse 进行 Android 开发的新手 我问一个非常基本的问题 是否可以在调试会话期间观察 监视变量的内容 有点像在 Visual Studio 中 我知道这是一个相当蹩脚的问题 但我自己却无法弄清楚 提前致谢 Gall
  • ASP.NET MVC - 如何在登录页面上显示未经授权的错误?

    在我的 ASP NET MVC 应用程序中 我的大多数控制器都装饰有 Authorize Roles SomeGroup 当用户无权访问某些内容时 他们会被发送到 Login 这是我的帐户控制器上的登录操作 如何确定用户由于未经授权而已到达
  • 如何添加静态断言来检查变量是否是静态的?

    我有一个仅适用于静态局部变量的宏 因为它使用内联汇编表示法来提取有关变量的数据 我需要一种方法来强制宏的输入确实是静态局部变量 correct func f static int x my macro x 不正确 func f int x