原创 条件编译总结

2009-8-24 23:13 3551 6 9 分类: MCU/ 嵌入式

预处理提供条件编译的功能,可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件,这对程序的调试、移植和修改非常有用,对条件编译总结如下:
对源程序的各部分有选择的进行编译称为条件编译。
(1).常量表达式
    #ifdef  常量表达式1
        程序段1
        #elif  常量表达式2
            程序段2
           #elif  常量表达式3
           程序段3
           ...
           #elif  常量表达式(n-1)
           程序段(n-1)
           else
          程序段n
    #endif


例如:在有多种标识符而只使用某一种标识符时,使用条件编译如下:


 #ifdef   标识符1


程序段1


#elif    defined 标识符2


 程序段2


#endif


 头文件中如下申明:


 #define EEPROM_I2C


//#define CS8953_I2C


某文件的程序段中:


#ifdef CS8953_I2C I2c


WriteByte(fd,0xD2);//发送器件地址


#elif defined EEPROM_I2C


I2cWriteByte(fd,0xA0);//发送器件地址


#endif


只需在注释和使用标识符就可以选择执行那段程序。
它的用途是:检查常量表达式,如为真,编译后续程序,并结束本次条件编译;如常量表达式为假,则编译程序段n,然后结束。
(2).标识符定义条件
     #ifdef  标识符
         程序段1
         #else  程序段2
     #endif
它的作用是:标识符已被定义过,编译程序段1,否则编译程序段2.
(3).标识符未定义条件
    #ifndef  标识符
        程序段1
    #else
        程序段2
    #endif
它的作用是:标识符未被#define定义过,编译程序段1,否则编译程序段2。

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户208176 2009-7-28 21:52

谢谢了,很有收获。

用户1398279 2009-2-19 08:29

#if defined...#else...#endif,该命令等价于#ifdef (常量表达式) ... #else ... #endif

yannzi 2009-2-18 15:18

见过#if defined() 这个怎么解释呢。 这些都不是很清楚,看了后稍微了解了点,谢谢
相关推荐阅读
用户1398279 2010-07-08 00:12
C语言共享库的制作
C语言共享库的制作0推荐 作者:杨硕,华清远见嵌入式学院讲师。1)基本概念共享库也是.o文件的集合,但是这些文件由编译器按照一种特殊的方式生成(Linux中,共享库文件为"ELF"格式,共享库已经具备...
用户1398279 2010-07-04 22:37
Linux 2.6.11 MTD驱动情景分析
Linux 2.6.11 MTD驱动情景分析最近几天为了熟悉linux的驱动开发,我选择了其MTD驱动做了一些研究。我能找到的文章中我觉得有些部分不够细致,所以我还是自己写了一部分分析,希望对别人也能...
用户1398279 2010-05-05 14:25
automake使用及库和头文件的链接
automake使用及库和头文件的链接关于automake的实践今天弄了很久的automake,自动生成Makefile,这样写程序时就会方便很多。之前也花时间看过一次,但当时只是对着一个hello....
用户1398279 2010-05-05 11:33
HP总裁退休时的信件
HP总裁退休时的信件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />我有个有趣的观察...
用户1398279 2010-04-23 18:04
VMWare的NAT配置(包括DHCP和固定IP配置)
NAT的DHCP配置:这个网上别人写过,自己实验了下,没有问题。1 .最重要的是你的两个服务必须开启:VMware DHCP Service 和VMware NAT Service。具体操作如下: 开...
用户1398279 2010-04-23 10:48
gcc命令objdump用法
gcc命令objdump用法2009年03月29日 星期日 23:49gcc命令之 objdump ---------------objdump是用查看目标文件或者可执行的目标文件的构成的GCC工具-...
EE直播间
更多
我要评论
3
6
关闭 站长推荐上一条 /3 下一条