C99 宏中的循环构造

2024-01-12

我想生成一个具有任意逻辑的数组初始值设定项,不幸的是需要一些循环。

#define RANDOM_ARRAY(n) \
    ...

double array[] = RANDOM_ARRAY(10);

假设上面的代码生成一个 10 元素数组的初始值设定项。是否可以在 C99 中定义这样的宏(带有循环)?

NB: it doesn't have to be a macro if a function call could suffice (but it has to be possible to call it among global initializers, not in a second function);


不幸的是,不可能在 C 中创建递归(或循环)宏函数。不过,如果您的初始值设定项有合理的最大长度,则可以使用这种类型的构造:

#define INITIALIZER(N)  { INITIALIZER_ ## N }
#define INITIALIZER_1   1
#define INITIALIZER_2   INITIALIZER_1, 2
#define INITIALIZER_3   INITIALIZER_2, 3


int
main(void)
{
    int tab[3] = INITIALIZER(3);

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

C99 宏中的循环构造 的相关文章

  • 全球化自定义数字格式 - 可变小数点

    我正在尝试更改公司应用程序中现有的数字格式 以使其对国际用户更具可读性 这是一个股票交易应用程序 因此大多数股票价格的数字精确到小数点后 2 位 例如 gt 17 23 我们还可以得到精确到小数点后 4 位的价格变动 因此细价股票可能是 0
  • 用于在 n LSBits 之后清除 m 位的掩码

    我在一次采访中被问到这个问题 要清除 16 位整数的 n 位之后的 m 位 假设数字是 10010010010100101 清除 LSBit 中 5 位后的三位 之前 1001100111011001 之后 1001100100011001
  • C++ lambda 构造函数参数可以捕获构造变量吗?

    下列compiles 但是是否存在任何悬而未决的参考问题 class Foo Foo std function
  • 是否可以通过容器/包装器在 WPF 表单中托管 WinForm 表单?

    有没有办法在 WPF 表单中的某种容器或包装类型控件中托管 显示完整的 WinForms 表单 而不仅仅是单个控件 我正在寻找与 html 中的 php 或 iframe 的虚拟包含概念类似的东西 可能通过将其编译成 OCX 或 DLL 来
  • 保序最小完美哈希函数

    我想用 C 为字典中的单词实现 OPMPH 函数 我该怎么做 Thanks 你看过这些论文吗 http dx doi org 10 1016 0020 0190 92 90220 P http dx doi org 10 1016 0020
  • 如何重写 C++ 标准库类函数?

    如何重写 C 标准库类函数 在我的应用程序中 我使用ofstream代码中许多不同位置的对象 现在我想在Linux Ubuntu中以不同的权限模式打开文件 但open的函数ofstream没有参数来指定它创建的文件的权限模式 现在我想覆盖o
  • 强名称验证失败

    两台机器 均带有 NET 3 5 和 VS 2008 VC SP1 可再发行组件 单个 exe 使用两个签名的 DLL 一个在 C CLI 中 一个在 C 中 该exe在一台机器上加载并运行良好 另一方面 我在 C 可执行文件上收到 强名称
  • Json.NET 在返回 json 序列化字符串时添加反斜杠

    我正在尝试使用 Json NET 将列表序列化为 json 字符串 但返回字符串中包含反斜杠 这又导致 json 解析失败 var x from d in entities Books ToList select new ID d ID B
  • C 中的结构和联合,确定大小和访问成员

    All 这是一个关于 Unions 的例子 我觉得它令人困惑 struct s1 int a char b union struct char c long d long e var 考虑到char是1个字节 int是 2 个字节并且lon
  • Makefile:没有规则来制作目标

    我正在关注本指南makefile http www cs colby edu maxwell courses tutorials maketutor 但我根本不理解最后一个例子 并且我无法让我的 makefile 工作 因为我收到了错误ma
  • 实体框架中 1:1 关系中关联的主体端意味着什么

    public class Foo public string FooId get set public Boo Boo get set public class Boo public string BooId get set public
  • 如何在其他项目中添加NLog类库项目

    我已经用 C 创建了一个控制台项目 在该项目中我使用 NLog 进行日志记录 当我运行该项目时 它成功登录到多个目标 例如控制台 文件 EventLog 以及 Sentinal 但是 当我将此项目作为类库并尝试添加对另一个项目的引用时 它不
  • 代码契约确保 ReSharperExternalAnnotations

    有谁知道如何在 ReSharperExternalAnnotations 中添加 Code Contracts Ensures 它在最新的 v7 1 3 和最新的 v8 EAP 中都不存在 在任何自定义 xml 中也不存在 具体来说 它应该
  • 隐式构造函数和默认构造函数有什么区别?

    这是非常微不足道的 但是捷克语 我的母语 不区分隐式和默认 所以我对一些捷克语翻译感到困惑 隐式和默认构造函数或构造函数调用之间有什么区别 struct Test Test int n 0 您能用这些术语描述以下语句的作用吗 Test t1
  • 创建 ip 网络数据包 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我必须使用任何协议手动创建自己的网络
  • SingleResult.Create 在空 IQueryable 上的 Odata 序列化错误

    我正在使用 OData v4 并尝试让一个非常简单的控制器工作 控制器 public class ProductController ODataController readonly MasterDataEntities db new Ma
  • 简单的 C# 屏幕共享应用程序

    我希望用 C 创建一个非常基本的屏幕共享应用程序 无需远程控制 我只希望用户能够将他们的屏幕广播到网络服务器 我应该如何实施这个 任何指向正确方向的指针将不胜感激 它不需要很高的 FPS 甚至更新 5 秒左右就足够了 您认为每隔 5 秒上传
  • C# 中 SQL 的转义字符

    我想在我的 C 代码中添加一个简单的 select 语句 示例如下所示 fname 中的 y 等值来自参数 从myTable中选择lname 其中fname y 这就是我正在做的事情 我显然得到了 Sql 异常 我该如何纠正它 谢谢 str
  • String.将 CRLF 替换为 '\n'

    我想知道是否有一种方法可以用 n 替换所有 CRLF 实例 有办法实现吗 你尝试过哪些方法不起作用 回车换行的意思回车 http en wikipedia org wiki Carriage return 换行 http en wikipe
  • 向前声明类模板显式/部分专业化有什么意义?

    C 98 标准规定 temp class spec 部分专业化声明本身不能通过名称查找找到 如果显式专业化也是如此 则这会使类模板显式 部分专业化的前向声明不可见 temp class spec match 当在需要实例化该类的上下文中使用

随机推荐

  • 为什么对话框会删除其内容而不刷新?

    我遇到了一个非常奇怪的问题 窗口似乎正在擦除其内容 并且在擦除后没有重新绘制它 该对话框源自CDHtmlDialog 我认为这是问题的一部分 发生某种非确定性代码执行 导致某些代码在某些情况下先于其他代码执行 而在其他情况下则相反 涉及的消
  • android可扩展列表视图从firebase检索数据

    我该如何使用firebase检索我的数据Expandable listview my firebase节点是这样的 适配器类 public class CustomExpandableListViewAdapter extends Base
  • 等待进程结束

    您好 我必须编写必须打开一些系统属性的程序 例如 Process sound new Process sound StartInfo FileName mmsys cpl sound Start Place 1 Process device
  • numpy:沿新轴扩展数组?

    当然一定有办法做到这一点 我无法解决 我有一个 9 4 数组 我想沿第三轴重复它 4096 次 所以它变得简单 9 4 4096 9 4 数组中的每个值简单地重复 4096 次沿着新的轴线 如果我可疑的 3D 图有意义 对角线是 z 轴 4
  • 雅可比坐标系中的椭圆曲线加法

    我尝试在素数场上的椭圆曲线上添加两个点 将这些点从仿射 仿射坐标转换 但无法获得正确的结果 我正在测试的曲线有 a 0 任何人都可以看到出了什么问题吗 From Affine BigInteger X1 P x BigInteger Y1
  • SpringBoot应用程序发布并读取ActiveMQ主题

    我有两个应该从一个主题中读取的接收器 但只有一个随机接收者收到消息 就像它实际上是从队列而不是主题中读取的一样 我读了this https stackoverflow com questions 40144561 how to listen
  • 将图框与 PyCharm 结合使用

    我花了将近两天的时间在互联网上滚动 但无法解决这个问题 我正在尝试安装图形框架包 https spark packages org package graphframes graphframes 版本 0 2 0 spark2 0 s 2
  • Android 设备与本地主机服务器的连接[重复]

    这个问题在这里已经有答案了 我是安卓新手 我正在开发一个使用 MySQL 的应用程序 该应用程序在模拟器中运行良好 但现在我需要在 Android 设备中运行该应用程序 我能做些什么 正如第一条评论中所述 您应该检查文件 AndroidMa
  • jQuery:如何使用 live() 捕获按键

    我需要捕获某些动态输入上的选项卡按键事件 但使用按键事件的正常语法似乎无法捕获按键代码 input live keypress function e if e which 9 alert Tab pressed 当我在 firebug 中通
  • 在shell脚本中创建重复字符的字符串[重复]

    这个问题在这里已经有答案了 我需要生成一串点 字符 作为变量 即 在我的 Bash 脚本中 用于输入15我需要生成这个长度为 15 的字符串 我需要以不同的方式这样做 我尝试使用它作为基础 来自 Unix com http www unix
  • 如何限制EditText输入内容

    我正在尝试创建一个简单的计算器 它提供 EditText 供用户输入数字 允许输入的内容应该是 1 2 3 4 5 6 7 8 9 0 我知道可以使用以下代码来限制输入内容 android digits 1234567890 android
  • SQL Server 使用 union all 和分页

    当我们使用 union all 从两个表获取结果时 如何应用分页 下面是这里的代码 我在已用于分页的 row num 列中获取重复值 WITH resultSetCTE AS SELECT ROW NUMBER OVER ORDER BY
  • 动态更改 IOS 应用程序的自定义 URL 方案

    有没有办法在运行时动态更改 ios 应用程序的自定义 URL 方案 我只能找到有关如何静态定义自定义方案的信息 即 自定义方案是在配置文件中预定义的 我想知道这是否可以在运行时动态完成 不 您不能动态更改自定义 url 自定义 url 方案
  • 指定 Winhttp 必须使用哪个网卡/连接

    我有一个 C 应用程序 它利用 Winhttp 发出 Web 请求 有没有办法指定 WinHTTP 必须使用哪个网卡进行连接 WinHTTP 或 WinInet 没有公开可用的选项来执行接口关联 它似乎在 System Net 中通过请求的
  • JAX-RS 和长轮询

    我正在尝试将长轮询与 JAX RS 泽西实现 一起使用 但它无法按我的预期工作 也许我误解了什么 我将不胜感激任何建议 请注意 出于安全原因 不可以选择使用反向连接 例如 Atmosphere Comet 等 并不是说我目前正在使用 Tom
  • SonataAdmin 子管理路由在调试中可见但未找到

    php bin console debug router grep postboxmessage pt RG admin mea postbox postboxmessage list ANY ANY ANY admin mea postb
  • MyBatis SelectList 输出 CopyOnWriteArrayList

    请耐心解答新手问题 因为我正在尝试同时学习 MyBatis 和 java 我有一个应用程序需要使用线程安全变量 根据一些研究和我对如何使用应用程序的想法 我决定使用 CopyOnWriteArrayList 而不是 Vector 当我从 m
  • Matlab 将字符串“aaa”转换为[“a”,“a”,“a”]数组

    所以我在 Matlab 中工作 并且在尝试理解字符串在 Matlab 中如何工作时遇到了一个真正的问题 基本上我正在尝试将字符串加载到其二进制版本的双精度数组中 所以基本上我想加载 a 并获取 0 1 1 0 0 0 0 1 下面的内容将字
  • 多对多关系过滤器

    我需要使用与另一个表具有多对多关系的类别表来过滤查询 是否可以使用多对多关系过滤查询 Table res partner有many2many字段category id与表有关的res partner category res partner
  • C99 宏中的循环构造

    我想生成一个具有任意逻辑的数组初始值设定项 不幸的是需要一些循环 define RANDOM ARRAY n double array RANDOM ARRAY 10 假设上面的代码生成一个 10 元素数组的初始值设定项 是否可以在 C99