- 论坛徽章:
- 1
|
这个标题似乎很含糊, 我还是先把我的目的描述清楚.
某个应用中有许多全局变量, 比如:
/*
* 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
谢谢! |
|