【发布时间】:2016-10-15 10:56:12
【问题描述】:
C 程序是否可以打印结构的定义?拥有成员名称会很棒,但只需一个有序的数据类型列表(以及数组的数组长度)就足够了。
我一直在寻找预处理器指令来实现这一点,但找不到任何东西。是否有预处理器指令可以获取代码的注释部分并将其用作#define 变量。如果是这样,我可以初始化一些 sting 变量来保存 #define 变量的值。
例如,像这样的结构按原样打印
struct foo{
int a;
char b;
short arr[6];
}
或者这样
struct s{
int m1;
char m2;
short m3[6];
}
只要可以从数据中重新创建结构,格式并不重要。所以这样的事情也可以:
s{int,char,short[10]}
仅供参考,这是一个资源受限的基于 ARM 的设备。
我不想手动将结构代码复制粘贴到打印语句中。如果struct代码改变了,而print语句没有改变,就会产生错误的结果。
【问题讨论】:
-
据我所知,不在标准 C 中。绝对不是通过 C 预处理器(通过“#define 变量”,你的意思是一个 C 预处理器宏),因为它不知道 C 本身是如何工作的。
-
@Rhymoid 不同意这一点;您可以使用预处理器为
#define structname_code ...复制相关代码并对其进行实例化。 -
“我不想手动复制粘贴结构代码”——可以让程序读取自己的源代码文件。
-
第二个@MarcusMüller。您可以创建封装类型和成员定义的定义,并将名称放入稍后评估的数据结构中。
-
谢谢@MarcusMüller 这应该是一个答案
标签: c gcc c-preprocessor preprocessor-directive