找回密码
 注册
搜索
查看: 2043|回复: 28

[讨论] MTk 宏的问题

[复制链接]
发表于 2009-9-3 16:51:59 | 显示全部楼层 |阅读模式
看MTK的程序的时候,经常会碰到
#if defined(__MSDC_SD_MMC__)
#define MSDC_USE_USB_CLK
#endif
的类似的语句,看到这里时我就不知道__MSDC_SD_MMC__这个宏有没有被定义,我的做法就是使用搜索整个工程,但是并没有找到
#define __MSDC_SD_MMC__ 这种语句,
只有类似以下语句
sysGen1.pl (tools):#if (defined(__MSDC_MS__) || defined(__MSDC_SD_MMC__) || defined(__MSDC_MSPRO__))
。。。。
Nvram.ini (modis\nvram):/D "__MSDC_SD_MMC__"
Obex.ini (modis\obex):/D "__MSDC_SD_MMC__"
Option.mak (make):           COM_DEFS += __MSDC_SD_MMC__
Plutommi.ini (modis\plutommi):/D "__MSDC_SD_MMC__"
。。。。。
Wae.ini (modis\wae):/D "__MSDC_SD_MMC__"
Wapadp.ini (modis\wapadp):/D "__MSDC_SD_MMC__"
Zi.ini (modis\zi):/D "__MSDC_SD_MMC__"


Option.mak (make):           COM_DEFS += __MSDC_SD_MMC__里面有这个
是不是说明 __MSDC_SD_MMC__这个宏已经被定义了呢?
MTK宏太多了,这个弄不懂,我程序分支都不知道怎么走的,可能问题比较菜,高人指点一下
发表于 2009-9-4 09:12:26 | 显示全部楼层
有一个方法,可以知道。你在那里面乱加一些东西。如果编过了说明那个没有定义那个宏。没编过就是那个宏定义了。[em08][em08][em08][em08][em08]
点评回复

使用道具 举报

发表于 2009-9-4 10:14:18 | 显示全部楼层
我一般也用2楼的 法子 !! 速度快!
点评回复

使用道具 举报

发表于 2009-9-4 10:42:19 | 显示全部楼层
Option.mak (make):           COM_DEFS += __MSDC_SD_MMC__
上面应该还有宏控制的,即你所在的xxxxx_07B_GPRS.mak上有定义,你要看这个文件里面的宏是如何定义的
点评回复

使用道具 举报

发表于 2009-9-4 11:18:42 | 显示全部楼层
Option.mak (make):           COM_DEFS += __MSDC_SD_MMC__

~~~~~~~~~~~~~~~~~~~
这个就说明定义过了,只是source insight 无法解析而已。
点评回复

使用道具 举报

发表于 2009-9-4 13:20:23 | 显示全部楼层
如果工程编译过,那么查看TargetOption.txt可以确认该宏是否已定义
点评回复

使用道具 举报

 楼主| 发表于 2009-9-4 14:43:16 | 显示全部楼层
如果工程编译过,那么查看TargetOption.txt可以确认该宏是否已定义

这个文件里面好像就一点点东西,不能说明问题吧!
点评回复

使用道具 举报

 楼主| 发表于 2009-9-4 15:12:55 | 显示全部楼层
经测试2楼的方法是最好的,耗时最少,多谢!
点评回复

使用道具 举报

发表于 2009-9-4 16:42:48 | 显示全部楼层
工程编译后,编译脚本会将COM_DEFS中定义的宏以 -D MACRO_DEFINED 的形式显示出来
点评回复

使用道具 举报

发表于 2009-9-5 12:44:11 | 显示全部楼层
在测试处乱加,看能否编过的确是个好方法。
还可查看MMI_features.log,编译以后MMI的宏定义与否在MMI_features.log都有说明

但这些方法都是在确定某个宏是否定义过,我现在的问题是如何打开关闭一个宏,即如何找到他的源头,因为关联的太多,有c文件,有mak文件,还有def......
那位高手谈谈经验……
点评回复

使用道具 举报

发表于 2009-9-6 02:38:46 | 显示全部楼层
查看编译开关文件
点评回复

使用道具 举报

发表于 2009-9-7 14:38:39 | 显示全部楼层
2楼方法确实不错,也比较实用
点评回复

使用道具 举报

 楼主| 发表于 2009-9-7 15:52:17 | 显示全部楼层
以下是引用Justinyue在2009-9-5 12:44:11的发言:
在测试处乱加,看能否编过的确是个好方法。
还可查看MMI_features.log,编译以后MMI的宏定义与否在MMI_features.log都有说明

但这些方法都是在确定某个宏是否定义过,我现在的问题是如何打开关闭一个宏,即如何找到他的源头,因为关联的太多,有c文件,有mak文件,还有def......
那位高手谈谈经验……

恩,这个也是一个新问题,期待高手谈谈经验!
点评回复

使用道具 举报

发表于 2009-9-7 17:38:35 | 显示全部楼层
一般情况下
xxxx_xxxx.mak和option.mak配对使用一起定义一些全局有效的宏
mmi_features_switchxxxx.h和mmi_features.h配合定义MMI中使用的宏
另外
的一些宏分布各个模块的一些头文件中,对各自模块熟悉的人才知道应该到哪修改。
点评回复

使用道具 举报

发表于 2009-9-8 13:29:17 | 显示全部楼层
谢谢thinkstone 的回答!还有一个问题请教:
MMI_features.h的宏都受类似CFG_MMI_XXX_XXX这样的宏控制,但这些宏又都在以下三个文件中,分别是:
MMI_features_switch.h ,
MMI_features_switchPLUTO.h,
还有一个MMI_features_switchPROWAVE25_GEMINI_08B.h,到底那个才是主控制的呢,这些文件之间应该有什么关联吧?
比如想打开MMI_features.h中的_MMI_LANG_SM_CHINESE ,这三个文件里面定义的都是像下面一样的:
#define CFG_MMI_LANG_SM_CHINESE (__OFF__),难到3个文件都得打开?
另外你说的“xxxx_xxxx.mak”是不是指的<customer>_<project>.mak这个文件?
再次感谢!
点评回复

使用道具 举报

发表于 2009-9-8 13:32:14 | 显示全部楼层
尖括号打不进去,后面说的mak文件指 "客户号_项目名.mak"文件
点评回复

使用道具 举报

发表于 2009-9-9 11:55:52 | 显示全部楼层
以下是引用ban121在2009-9-4 11:18:42的发言:
Option.mak (make):                                                                                 COM_DEFS += __MSDC_SD_MMC__

~~~~~~~~~~~~~~~~~~~
这个就说明定义过了,只是source insight 无法解析而已。


将所有make文件加入到SourceInsight,Make里的宏SourceInsight同样可以进行链接查看
点评回复

使用道具 举报

发表于 2009-9-11 09:09:56 | 显示全部楼层
后面说的make文件,是"客户号_项目名.mak"
点评回复

使用道具 举报

发表于 2009-9-26 23:31:52 | 显示全部楼层
2楼的方法比较干脆
点评回复

使用道具 举报

发表于 2009-10-8 23:55:32 | 显示全部楼层
学习下,谢谢
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2025-2-26 07:34 , Processed in 0.058575 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表