C程序是否可以打印结构的定义有成员名是很好的,但是只要一个数据类型的有序列表(如果是数组,那么数组长度)就足够了。
我正在寻找预处理器指令来实现这一点,但找不到任何是否有一个预处理器指令可以获取代码的注释部分并将其用作定义变量如果是这样的话,我可以初始化一些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的设备。
我不想手动复制粘贴结构代码到打印语句中如果结构代码更改,并且print语句没有更改,则会产生错误的结果。

最佳答案

如果您已经有了源代码,为什么要这样做?
但一般来说,C编译器不提供选项,例如“列出”编译期间看到的所有结构编译器将保留内部符号表,但没有人考虑到需要打印这些表在编译期间读取的所有源文件和头文件中也可能有数百个结构和类型。
还要注意,类型、字段和变量的名称主要是为了给程序员赋予意义编译之后,许多名字都会消失只有全局变量和缺少的外部变量才能在对象文件中保留其名称,以便在链接期间和链接之后都不再需要这些名称例如,编译器已将a->b转换为与b所在内存位置相关的a偏移量。

关于c - GCC-打印结构的定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40058161/

10-09 00:29
查看更多