x-macros相关内容

X-Macros 的实际使用

我刚刚了解到 X-Macros.你见过 X-Macros 在现实世界中的哪些用途?它们什么时候适合这项工作? 解决方案 几年前,当我开始在代码中使用函数指针时,我发现了 X 宏.我是一名嵌入式程序员,经常使用状态机.我经常会写这样的代码: /* 声明状态代码的枚举 */枚举{ STATE0, STATE1, STATE2, ... , STATEX, NUM_STATES};/* 声明一 ..
发布时间:2021-12-02 08:04:05 其他开发

任何人都可以使用示例代码来解释X-宏的用法吗?

我试图详细了解X宏主题.但这并没有完全清楚.最好由任何一位专家用“如何使用,如何调用"的示例来解释该主题. 我找到了几篇文章,但是对此并没有完全清楚.在所有地方,他们都使用了我缺乏使用这些X宏的代码段. 提前致谢帕塔 解决方案 您基本上 #define 变量列表作为占位符宏 X 的参数: #define X_LIST_OF_VARS \X(my_first_var)\X(另 ..
发布时间:2021-05-31 19:29:11 其他开发

X宏打破氧气笔迹

我有3个文件: test.c int table [] = { #define X(val)val, #include“ test.x” #undef X }; void level2(void){ level3(); level4(); } void level3(void){ level4(); } test2.c ..
发布时间:2020-10-26 01:46:33 其他开发

将宏名称传递到X宏列表是否合法

我想到以下是 X宏技巧的首选样式: #define LIST_OF_COLOURS(X)\ X(RED)\ X(绿色)\ X(蓝色) #定义LIST_OF_FRUIT(X)\ X(苹果)\ X(橙色)\ X(TOMATO) 具体来说,传递 X 到列表的宏,而不是在每次实例化列表时都取消定义和重新定义它。这允许: #define X_LI ..
发布时间:2020-10-10 22:48:57 C/C++开发

连接X宏的多个标记

我正在尝试同时使用X宏和预处理程序级联。 我已经阅读了很多关于SO的其他问题与预处理器级联有关,但仍无法解决问题或如何适应我的用例。 项目列表是ID号列表一堆结构,例如: #define LIST_OF_ID_NUMS \ \ X(1)\ X(2)\ X(3)\ X(4)\ X(5)\ \ X(6)\ X(7)\ X(8)\ X(9)\ ..
发布时间:2020-10-07 20:16:22 其他开发

在C中对条件编译的枚举进行字符串化

我们的系统中有大量的枚举表示事件,错误等内容. 我正在尝试构建基础结构,使我们能够将每个接收到的事件或错误消息记录为字符串(而不是纯整数),而不必为每个枚举构建和维护两个列表. 我发现X Macro技术非常适合我的需求.因此,不要这样做: typedef enum { valA, valB, valC } some_enum; const char* some ..
发布时间:2020-05-05 09:12:55 其他开发

我可以追加到preprocessor宏?

有没有办法在标准C或GNU扩展到附加的东西宏定义?给宏的例如的,定义为结果 的#define清单富栏结果 我可以追加 BAS ,以便它列表的#define清单富酒吧浅? 我希望我可以做这样的事情: 的#define清单富巴BAS#定义List_展开(名单) 和#undef名单 #定义列表展开(List_)QUUX 但我不能想出如何定义展开()宏,以便它会做我想做的。 动机: 我与歧视 ..
发布时间:2016-08-21 21:11:18 C/C++

实际使用的X宏

我刚刚学会的的X宏。的X宏什么现实世界使用你见过?当他们是这个职位的合适的工具? 解决方案 我在几年前发现了X宏,当我开始利用函数指针在我的code。我是一个嵌入式程序员,我用状态机频繁。我经常会写code是这样的: / *声明状态codeS *枚举/ 枚举{STATE0,STATE1,STATE2,...,STATEX,NUM_STATES};/ *声明函数指针表* / p_func ..
发布时间:2016-08-17 20:45:02 C/C++

是否有可能改变这种X宏构建一个结构,它包括阵列?怎么样?

发现这个非常有用的Q / A对SO:是否有通过在C diferent类型的元素一个struct任何方式循环? 但因为我很新的,整个的X宏观的东西,我想知道,如果它怎么有可能去适应这个例子用数组一个结构 - 是这样的: typedef结构 { UINT8地址1 [SIZEOF_ADDR] UINT8地址2 [SIZEOF_ADDR] UINT8 ADDR3 [SIZEO ..
发布时间:2016-06-01 13:47:19 其他开发