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

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(使用前将#替换为@)

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

随机推荐

  • 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