免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1998 | 回复: 7

自动生成打印C中全局变量的程序 [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-08-10 06:20:00
发表于 2005-09-13 09:14 |显示全部楼层
这个标题似乎很含糊, 我还是先把我的目的描述清楚.

某个应用中有许多全局变量, 比如:

/*
* ProjectData.c
*/

U8 No[9];
F32 Value[100];

struct StoreStruct
{
struct SubValue
{
U32 A[10][11][12];
U32 B[10][11][12];
} Sub;
F32 Temp[100];
} Store[10][10][10];

...
...
// End of ProjectData.c

我现在想把所有的变量值都打印出来, 也就是要写成诸如下面的代码:
/*
* CheckData.c
*/
printf("No[0] = %c", No[0]);
printf("No[1] = %c", No[1]);
printf("No[2] = %c", No[2]);
printf("No[3] = %c", No[3]);
...
...
printf("Value[0] = %f", Value[0]);
printf("Value[1] = %f", Value[1]);
printf("Value[2] = %f", Value[2]);
...
...
printf("Store[0][0][0].Sub.A[0][0][0] = %d", Store[0][0][0].Sub.A[0][0][0]);
printf("Store[0][0][0].Sub.A[0][0][1] = %d", Store[0][0][0].Sub.A[0][0][1]);
printf("Store[0][0][0].Sub.A[0][0][2] = %d", Store[0][0][0].Sub.A[0][0][2]);
...
...
// End of CheckData.c
假如手工去完成上面的代码会很烦人, 而且当全局变量或结构改变时又必须得做相应的修改, 容易出错.

我开始试图用脚本来自动生成CheckData.c, 但发现这样很难彻底解决问题, 方向不对. 编译器能分析ProjectData.c, 我应该从编译器那里获得信息似乎容易一些和可靠一些. (GDB中可以打印变量的值, 调试信息中有关于包含哪些变量 变量是什么类型的信息)

能达到自动生成CheckData.c的目的吗?我在编译器的选项里找不到相关的设置.

arm-elf-gcc --version
2.95.3

谢谢!

论坛徽章:
0
发表于 2005-09-13 09:23 |显示全部楼层

自动生成打印C中全局变量的程序

我觉得你可以用ultraedit的列块模式来编辑CheckData.c

论坛徽章:
0
发表于 2005-09-13 09:32 |显示全部楼层

自动生成打印C中全局变量的程序

for(i = 0; i < N; i++)
printf("a[%d] is %f\n", i, a);
不行吗?
P.S. 楼主就是linuxforum的antzcn兄吗?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2005-09-13 09:51 |显示全部楼层

自动生成打印C中全局变量的程序

Perl?
vim?

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-08-10 06:20:00
发表于 2005-09-13 09:53 |显示全部楼层

自动生成打印C中全局变量的程序

原帖由 "albcamus" 发表:
行吗?
P.S. 楼主就是linuxforum的antzcn兄吗?


哈哈!正是!正在看albcamus兄的BLOG.
可能albcamus兄没明白我的意图.

for(i = 0; i < N; i++)
printf("a[%d] is %f\n", i, a);

就以上两行, N和a的类型需要我来判断, 还是达不到自动的目的.

其实, 找出程序中 (1)有哪些变量 (2)变量是什么类型 的工作由程序来识别, 生成打印语句就容易多了.

  
编译器肯定知道(1)(2), 但如何让它告诉我呢?

此贴开始贴在linuxforum上的编译器版, 无人应!

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-08-10 06:20:00
发表于 2005-09-13 09:56 |显示全部楼层

自动生成打印C中全局变量的程序

原帖由 "flw" 发表:
Perl?
vim?


谢谢flw斑主. Perl和vim好像都与这没什么联系呀?不明白你的疑惑!

论坛徽章:
0
发表于 2005-09-13 09:58 |显示全部楼层

自动生成打印C中全局变量的程序

那估计用perl比较好,请教flw老大吧。我以前看过CMU的牛人用perl生成C代码,很酷

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-08-10 06:20:00
发表于 2005-09-13 10:12 |显示全部楼层

自动生成打印C中全局变量的程序

[quote]原帖由 "albcamus"]那估计用perl比较好,请教flw老大吧。我以前看过CMU的牛人用perl生成C代码,很酷[/quote 发表:


我用shell脚本(awk, sed , etc)写过, 但发现分析复杂的结构体和多维数组时会相当烦人,而且很容易出错!
望flw老大给个方向!谢谢两位!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP