在 C 中将块指令作为宏的参数传递

2023-12-22

我不知道这是否可能,我想像参数一样在宏中传递指令块。我将向您展示一个示例:

#define ADD_MACRO(size, BLOCK){ for(int i=0; i<size; i++){\
                                    BLOCK} }

你怎么看待这件事?

感谢帮助


给定宏的唯一问题是它不处理逗号BLOCK。可变宏参数允许使用逗号:

#define ADD_MACRO(size, ...) do { for(int i=0; i<size; i++){\
                                      __VA_ARGS__} } while(0)

(此外,常见的做法是将语句宏括在do … while(0)强制用户包含分号。)

(当然,原来的问题可能有更好的解决方案。预处理器是一个钝器。这是针对所述问题的预处理器解决方案。)

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

在 C 中将块指令作为宏的参数传递 的相关文章

  • C#.Net 邮件将进入垃圾邮件文件夹

    我正在从 ASP net Web 应用程序发送电子邮件 邮件发送成功 没有失败 但大多数都进入了垃圾邮件文件夹 请帮助我克服垃圾邮件过滤器 我的发送邮件代码 public void SendMail string FromAddress s
  • 捕获 .aspx 和 .ascx 页面中的异常

    问题说明了一切 请看以下示例代码 ul li li ul
  • 如何使用 openSSL 函数验证 PEM 证书的密钥长度

    如何验证以这种方式生成的 PEM 证书的密钥长度 openssl genrsa des3 out server key 1024 openssl req new key server key out server csr cp server
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • Selenium - C# - Webdriver - 无法找到元素

    在 C 中使用 selenium 我试图打开浏览器 导航到 Google 并找到文本搜索字段 我尝试下面的 IWebDriver driver new InternetExplorerDriver C driver Navigate GoT
  • if constexpr 中的 not-constexpr 变量 – clang 与 GCC

    struct A constexpr operator bool const return true int main auto f auto v if constexpr v A a f a clang 6 接受该代码 GCC 8 拒绝它
  • 来自嵌入图像的 BitmapSource

    我的目标是在 WPF 窗口上重写 OnRender 方法中绘制图像 someImage png 它是嵌入资源 protected override void OnRender System Windows Media DrawingCont
  • 保证复制省略是否适用于函数参数?

    如果我理解正确的话 从 C 17 开始 这段代码现在要求不进行任何复制 Foo myfunc void return Foo auto foo myfunc no copy 函数参数也是如此吗 下面的代码中的副本会被优化掉吗 Foo myf
  • LinkLabel 无下划线 - Compact Framework

    我正在使用 Microsoft Compact Framework 开发 Windows CE 应用程序 我必须使用 LinkLabel 它必须是白色且没有下划线 因此 在设计器中 我将字体颜色修改为白色 并在字体对话框中取消选中 下划线
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • SQLAPI++ 的免费替代品? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何免费 也许是开源 的替代品SQLAPI http www sqlapi com 这个库看起来
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • 以编程方式创建 Blob 存储容器

    我有一个要求 即在创建公司时 在我的 storageaccount 中创建关联的 blob 存储容器 并将容器名称设置为传入的字符串变量 我已尝试以下操作 public void AddCompanyStorage string subDo
  • Xamarin Forms Binding - 访问父属性

    我无法访问页面的 ViewModel 属性以便将其绑定到 IsVisible 属性 如果我不设置 BindingContext 我只能绑定它 有没有办法可以在设置 BindingContext 的同时访问页面的 viewmodel root
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • 任何人都可以清楚地告诉如何在不使用像 这样的预定义函数的情况下找到带有小数值或小数值的指数吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 例如 2 0 5 1 414 所以想要 我是 c 的新手 所以请解释简单的逻辑 如果不是复杂的逻辑也足够了 在数学中 从整数取幂到实数
  • 如果找不到指定的图像文件,显示默认图像的最佳方式?

    我有一个普通的电子商务应用程序 我将 ITEM IMAGE NAME 存储在数据库中 有时经理会拼错图像名称 为了避免 丢失图像 IE 中的红色 X 每次显示产品列表时 我都会检查服务器中是否有与该产品相关的图像 如果该文件不存在 我会将其
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐

  • 如何从正则表达式捕获组中修剪空格?

    正在检查的字符串类似于以下内容 注意括号之间的空格 name address zip phone number 我现在使用的表达方式 成功捕获括号内的每个文本 但它也捕获前导和尾随空格 所以我最终得到 name address zip ph
  • AES/CBC/PKCS5Padding 问题

    我正在尝试加密和解密一些简单的文本 但由于某种原因 我遇到了一个奇怪的错误 javax crypto BadPaddingException 为什么 JCE 会生成未正确填充的字节 我有以下代码 import javax crypto Ci
  • 到底什么是“线程安全类型”?什么时候我们需要使用“lock”语句?

    我阅读了所有有关线程安全类型和 lock 语句的文档 但我仍然没有 100 理解它 到底什么时候需要使用 lock 语句 它与 非 线程安全类型有何关系 谢谢 想象一个类的实例 其中有一个全局变量 想象两个线程调用该对象的方法恰好在同一时间
  • 将 android 库添加到 Studio/SDK 中的默认库列表中

    首先 为了消除任何疑问 我知道如何向 Android 项目添加库 我的问题是 我想将一个库添加到我的 android studio 中的默认库列表中 让我用一个例子来解释一下 假设我想将 Glide 库添加到我的项目中 首先 我必须转到 g
  • 克隆一个包含所有关系的 Eloquent 对象?

    有没有什么方法可以轻松克隆 Eloquent 对象 包括它的所有关系 例如 如果我有这些表 users id name email roles id name user roles user id role id 除了在中创建一个新行use
  • 如何使用 jquery 动态更改 iframe 中的内容?

    我想知道是否可以有一个带有 iframe 和一些 jquery 代码的网站 每 30 秒更改 iframe 内容 内容位于不同的网页中 像这样的东西
  • setInterval() 不重复。仅有效1次

    我试图让 div 的 left 属性自行改变 当你将鼠标悬停在上面时每秒改变一次 所以我做了这个 div scroll left hover function var left num div license video css left
  • 如何使用 ggplot 将点随机散布在圆内,而不聚集在中心周围?

    我想用ggplot画一个圆 然后在圆内散布点 我有代码 摘自这个答案 https stackoverflow com a 68606605 6105259 这让我非常接近我想要的 但是 我希望点分散在圆内randomly 但现在我在中心周围
  • WPF Datagrid 中的 ItemTemplateSelector 与 AutoGenerateColumns

    在我们的数据网格中 我们使用ItemTemplateSelector根据绑定到特定单元格的数据在两个数据模板之间切换 由于列数取决于我们正在使用的当前数据集AutoGenerateColumns in our DataGrid 看来这个特殊
  • 有没有办法以编程方式将 iOS 设备的相机焦点设置为无限远?

    我正在创建一个应用程序 可以锁定相机焦点以进行视频录制 我想将焦点锁定到无限远 而无需用户手动调整焦点 这可能吗 谢谢 可悲的是没有 正如 Artem 所说 你可以将相机设置为焦点锁定模式 进入自动对焦模式 对焦 然后锁定 或连续自动对焦模
  • AndroidManifest.xml 使用 `android:name="io.flutter.app.FutterApplication"`

    升级到Flutter 2 10后 出现以下错误 Warning Your Flutter application is created using an older version of the Android embedding It i
  • Magento 愿望清单 - 删除项目

    我构建了一个自定义脚本 用于使用 AJAX 在愿望清单中添加和删除项目 添加产品不是问题 但我不知道如何删除项目 Magento 版本是1 5 1 0 脚本位于 scripts 看起来像这样 include once app Mage ph
  • 如何为 GAE 数据存储数据模型创建两个唯一的可查询字段?

    首先进行一些设置 上周 我在实现我构建的一种特定方法时遇到了麻烦 该方法允许我管理与一个 db Model 对象关联的两个唯一字段 由于这是不可能的 因此我创建了一个父实体类和一个子实体类 每个类都为 key name 分配了一个唯一值 你
  • Rails new 给出“在任何源中都找不到正确版本的 Railties (4.2.5.1)”错误

    我正在尝试将 Rails 5 0 0 rc1 与 Ruby 2 3 1 一起使用 但是 如果我尝试在 programming 目录中创建一个新项目 我会得到以下信息 Documents Programming rails new foo C
  • 未找到资源样式/LaunchTheme

    我刚刚将应用程序的图标更改为较新的图标 现在每当我尝试构建并运行该应用程序时 我都会收到以下错误 Project build app intermediates manifests full debug AndroidManifest xm
  • 将 GZIP:ed 文本存储在 mysql 中?

    对于较大的应用程序和数据库来说 在将文本数据插入数据库之前对其进行 GZIP 压缩是很常见的事情吗 我猜想在再次解压缩之前 对实际文本字段的任何全文搜索都将不起作用 我还没有看到太多这样的事情 因为它基本上可以防止人们对 MySQL 端的数
  • Redux、规范化实体和 lodash 合并

    我使用 Redux React 和 Lodash 以及相当标准的标准化实体存储 当我在 redux 减速器中合并新实体时 对所有现有实体的引用都会发生变化 尽管没有被修改 从而导致任何纯组件重新渲染 lodash 合并是否有一种替代方法 可
  • 铁轨变了?方法总是错误的

    我正在尝试检查我的模型中复选框值是否已更改 如果改变了我想要我的方法set ip setting跑进去before save but my x即使我更改值 变量也总是返回 false 为什么它总是返回错误 我不明白我做错了什么 before
  • C 和 C++ 中类型的互操作性

    一个非常简单的问题 是否有任何保证 Cint和 C 是一样的int 在同一系统上 不言而喻 这当然是一个纯粹的理论问题 C 和 C 标准使用相同的语言来定义基本类型 但是 Fortran 2003 明确指出 use ISO C BINDIN
  • 在 C 中将块指令作为宏的参数传递

    我不知道这是否可能 我想像参数一样在宏中传递指令块 我将向您展示一个示例 define ADD MACRO size BLOCK for int i 0 i