如何快速查找C语言代码中的宏的值
2013-09-02 18:04
190 查看
/article/9168325.html
很多的系统,代码量超大,在我们阅读其代码的时候,往往macro能决定代码执行的具体分支。利用find grep查找起来会特别慢,而且不一定能找到正确的值。如果系统是可编译的,可以利用编译器的预处理功能很快知道宏的具体值。
方法如下:
在CFLAGS里面添加 -E 选项。
举例说明:
在Android 系统里面,
1. 在Andriod.mk里面添加-E 参数。
LOCAL_CFLAGS += -E
2.重新编译,显示其过程
mm showcommands
3.编译过程会打印出类似下面的结果。
prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc -I hardware/ttd/marvell/generic/bmm-lib/lib -I out/target/product/OMS_TTD/obj/SHARED_LIBRARIES/libbmm_intermediates -I system/core/include -I hardware/libhardware/include -I hardware/libhardware_legacy/include
-I hardware/ril/include -I dalvik/libnativehelper/include -I frameworks/base/include -I frameworks/base/opengl/include -I external/skia/include -I out/target/product/OMS_TTD/obj/include -I bionic/libc/arch-arm/include -I bionic/libc/include
-I bionic/libstdc++/include -I bionic/libc/kernel/common -I bionic/libc/kernel/arch-arm -I bionic/libm/include -I bionic/libm/include/arch/arm -I bionic/libthread_db/include -c -fno-exceptions -Wno-multichar -msoft-float -fpic -ffunction-sections
-funwind-tables -fstack-protector -fno-short-enums -march=armv5te -mtune=xscale -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -include system/core/include/arch/linux-arm/AndroidConfig.h -I system/core/include/arch/linux-arm/ -mthumb-interwork
-DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -DNDEBUG -g -Wstrict-aliasing=2 -finline-functions -fno-inline-functions-called-once -fgcse-after-reload
-frerun-cse-after-loop -frename-registers -DNDEBUG -UDEBUG -DLOG_DISABLEDEBUG=1 -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -E -MD -o out/target/product/OMS_TTD/obj/SHARED_LIBRARIES/libbmm_intermediates/bmm_lib.o hardware/ttd/marvell/generic/bmm-lib/lib/bmm_lib.c
其中-o 是生成的文件。
打开这个文件,就是我们预编译的结果,可以很清晰地看到各个宏的具体值。
很多的系统,代码量超大,在我们阅读其代码的时候,往往macro能决定代码执行的具体分支。利用find grep查找起来会特别慢,而且不一定能找到正确的值。如果系统是可编译的,可以利用编译器的预处理功能很快知道宏的具体值。
方法如下:
在CFLAGS里面添加 -E 选项。
举例说明:
在Android 系统里面,
1. 在Andriod.mk里面添加-E 参数。
LOCAL_CFLAGS += -E
2.重新编译,显示其过程
mm showcommands
3.编译过程会打印出类似下面的结果。
prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc -I hardware/ttd/marvell/generic/bmm-lib/lib -I out/target/product/OMS_TTD/obj/SHARED_LIBRARIES/libbmm_intermediates -I system/core/include -I hardware/libhardware/include -I hardware/libhardware_legacy/include
-I hardware/ril/include -I dalvik/libnativehelper/include -I frameworks/base/include -I frameworks/base/opengl/include -I external/skia/include -I out/target/product/OMS_TTD/obj/include -I bionic/libc/arch-arm/include -I bionic/libc/include
-I bionic/libstdc++/include -I bionic/libc/kernel/common -I bionic/libc/kernel/arch-arm -I bionic/libm/include -I bionic/libm/include/arch/arm -I bionic/libthread_db/include -c -fno-exceptions -Wno-multichar -msoft-float -fpic -ffunction-sections
-funwind-tables -fstack-protector -fno-short-enums -march=armv5te -mtune=xscale -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -include system/core/include/arch/linux-arm/AndroidConfig.h -I system/core/include/arch/linux-arm/ -mthumb-interwork
-DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -DNDEBUG -g -Wstrict-aliasing=2 -finline-functions -fno-inline-functions-called-once -fgcse-after-reload
-frerun-cse-after-loop -frename-registers -DNDEBUG -UDEBUG -DLOG_DISABLEDEBUG=1 -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -E -MD -o out/target/product/OMS_TTD/obj/SHARED_LIBRARIES/libbmm_intermediates/bmm_lib.o hardware/ttd/marvell/generic/bmm-lib/lib/bmm_lib.c
其中-o 是生成的文件。
打开这个文件,就是我们预编译的结果,可以很清晰地看到各个宏的具体值。
相关文章推荐
- 如何快速查找C语言代码中的宏的值
- C语言数据结构之如何快速查找链表的中间节点
- c语言 快速排序 和 二分 查找 模型
- 在 IBM Lotus Notes 和 Domino 中编写快速查找代码
- 初识:如何实现利用C语言代码封装成可以安装的windows软件?
- C语言实现树的动态查找实例代码
- 如何在我的博客中快速查找你想要的东东
- C语言使用stdlib.h库函数的二分查找和快速排序的实现代码
- 如何快速的有序的对多层级结构的代码进行分类管理
- android中如何快速查找不用的资源
- 在C#中如何调用C语言代码
- 已有Java/Android源码项目,如何快速理解代码结构
- 如何在 Windows 中快速查找文档
- 如何优化C语言代码
- eclipse如何快速删除代码中的空行?
- 如何快速理解其他人写的Java代码
- 如何快速编译mediatek\operator下面代码
- 如何使用C语言来编写MSP430的高质量代码
- 从寻找资源的习惯上谈如何获得好的代码及控件(使用Koders查找)
- linux系统上如何快速的查找一个文件?