# ; @REM !等符号在WINCE6.0下的意义和作用

2010年5月17日
# ; @REM !等符号在WINCE6.0下的意义和作用

     其实在我的日志里面很早就有介绍这里面一些符号的意义了,具体可以看我的第二篇日志《 .bat 配置文件的一些符号所代表的意思?》。只是当时学的不是很扎实,今天师妹请教,于是整理一篇日志,方便后面的同学学习。

     其实这些文件都是一个批处理文件,具体的指令可以参考windows shell 编程指令。

    文章标题中出现的符号不是我们经常所看见的普通标点符号,也不要往C语言哪方面的意思去想。正所谓对事不对人,同一个符号在不同的环境下有着不同的意思。上面提到饿这些符号一般存在于以下几个重要的文件里面:platform.bib,SMDK6410.bat,platform.reg,source等。当然像.CPP文件中肯定也有,但是那里面的# ;相信大家都是知道的,这里就不赘述。

     首先打开platform.reg,这里以SMDK6410.bat为例:

代码

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> ; ------------  I2C Bus Driver  ------------------------------------------------
IF BSP_NOI2C 
!
;; I2C Bus Driver
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IIC]
    
" Prefix " = " IIC "
    
" Dll " = " s3c6410_iic.dll "
    
" Order " = dword: 5
    
" Index " = dword: 0
    
" Mode " = dword: 1                 ; Mode:  0   =  POLLING,  1   =  INTERRUPT
    
" SlaveAddress " = dword: 0         ; Bus Driver ' s Slave Address
     " FriendlyName " = " IIC Bus Driver "
    
" IClass " = " {A32942B7-920C-486b-B0E6-92A702A99B35} "    ; Power - manageable generic
ENDIF BSP_NOI2C 
!
;
-------------------------------------------------------------------------

    第一行就不用说了,;表示注释。重点介绍IF BSP_NOI2C !和ENDIF BSP_NOI2C !,从字面意思上可以按照IF ENDIF来理解,相信也不是什么困难的事情,只是这里的!到底是什么作用呢?先卖个关子,继续往下看。还是以I2C为例,打开platform.bib,有如下内容:

代码

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> ; ------------------  I2C BUS Driver  -------------------------------------------------------
IF BSP_NOI2C 
!
    s3c6410_iic.dll        $(_FLATRELEASEDIR)\s3c6410_iic.dll                    NK            SHK
ENDIF BSP_NOI2C 
!
;
---------------------------------------------------------------------------------------

    可以看见这里仍然有IF BSP_NOI2C !和ENDIF BSP_NOI2C !,可以肯定的是和上文的意思是一致的。继续往下看,还是以I2C为例,打开SMDK641.bat,可以看见以下内容:


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> set  BSP_NOI2C =
set  BSP_NOSPI = 1
@REM wifi can be abled when spi 
is  diabled
set  BSP_NOWIFI = 1

    相信大家看到这里已经有点眉目了,前文说的IF BSP_NOI2C !里面的 BSP_NOI2C !就是指的是否在SMDK6410.bat里面进行了变量的定义,这里set BSP_NOI2C=就是定义了I2C的环境变量,接着注册表和.bib就可以通过IF,ELSE进行判断,进而执行IF,ELSE之间的内容。如果等于1,如:set BSP_NOWIFI=1,则说明,是没有设置WIFI这个环境变量,因而,即使在IF,ELSE之间定义了,如:


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> IF BSP_NOWIFI !
    s3c6410_wifi.dll        $(_FLATRELEASEDIR)\s3c6410_wifi.dll                    NK            SHK
ENDIF BSP_NOWIFI
!

    那么也是不会去执行IF,ELSE之间的内容。这里的感叹号,你可以理解成前置的set。当然,这里的环境变量你也可以在PB6.0下进行添加,这里就不进行说明了。细心的人或许还发现了@REM wifi can be abled when spi is diabled,这里的@怎么看呢?它应该和@REM结合在一起看,表示注释。至于#,我们以CAMERA下的SOURCE文件为例:

代码

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> ! IF  " $(BSP_SMDK6410) "   ==   " 1 "
#        $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\S5K4BA_MODULE.lib
        $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\OV9650_MODULE.lib       
#        $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\SAA7113_MODULE.lib     
! ENDIF

    我所使用的Samsung6410有SAA7113和OV9650,怎么选择呢?其中一个就是在SOURCE下看你的链接库,那么不需要的就需要注释掉,这里的#就是注释的意义。

    最后再以一个例子让我们一起回顾一下批处理文件:

比如
set BSP_DEBUGPORT=SERIAL_UART0
set 用来设置一个环境变量 BSP_DEBUGPORT就代表SERIAL_UART0从意义上来看 好像是BSP调试端口为串口0,具体的要看具体的实现代码。
@REM 跟#类似为注释掉一行
$()为引用括号里的环境变量
比如:
 set _TARGETPLATROOT=“c:\wince5.0\platform"
set  —CPUINDPATH = ARMlib
$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\OV9650_MODULE.lib   
 实际上这个路径就相当于  
“c:\wince5.0\platform\lib\armlib\0v9650_module.lib" 

你可能感兴趣的:(编程,c,windows,shell,语言,WinCE)