条件编译命令的三种形式(C++中#if和#ifdef区别)

本文目录
C++中#if和#ifdef区别
在你的例子中,是一样的效果。
#ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译条件,比如
#if defined (AAA) && defined (BBB)
xxxxxxxxx
#endif
#if defined (AAA) || VERSION 》 12
xxxxxxxxx
#endif
而#ifdef 就不能用上面的用法,也就是说,当你要判断单个宏是否定义时
#ifdef 和 #if defined 效果是一样的,但是当你要判断复杂的条件时,只能用 #if
条件编译的指令
条件编译指令将决定哪些代码被编译,而哪些是不被编译的。可以根据表达式的值或者某个特定的宏是否被定义来确定编译条件。 一般形式有如下几种
(1) #if表达式//语句段1#else//语句段2]#endif如果表达式为真,就编译语句段1,否则编译语句段2
(2) #if表达式1//语句段1#elif表达式2//语句段2#else//语句段3#endif如果表达式1真,则编译语句段1,否则判断表达式2;如果表达式2为真,则编译语句段2,否则编译语句段3 (1)#ifdef的一般形式: #ifdef宏名//语句段#endif作用:如果在此之前已定义了这样的宏名,则编译语句段。
(2)#ifndef的一般形式: #ifndef宏名//语句段#endif作用:如果在此之前没有定义这样的宏名,则编译语句段。
#else可以用于#ifdef和#ifndef中,但#elif不可以。 #include《stdio.h》#define LETTER1int main(int argc,char*argv)!=’\0’){i++;#ifdef LETTER1if(c》=’a’&&c《=’z’)c=c-32;#elseif(c》=’A’&&c《=’Z’)c=c+32;#endifprintf(%c,c);}return0;}运行结果为clANGUAGE
C语言提供的预编译处理命令主要有哪三种
1.宏定义:用一个指定的标识符(即名字)来代表一个字符串,如:用PI代表3.1415926,#define PI 3.1415926
2.文件包含:指一个源文件可以将另外一个源文件的全部内容包含进来,#include《文件名》
3.条件编译:对一部分内容指定编译的条件,即满足一定的条件才编译,主要有:
(1)#ifdef标识符
程序段1
#eles
程序段2
#endif
(2)#ifndef标识符
程序段1
#eles
程序段2
#endif
(3))#if标识符
程序段1
#eles
程序段2
#endif

更多文章:
native在java中的用法(native的Java关键字)
2026年8月22日 20:30
正则匹配数字字符串开头(js 正则表达式获取字符串开头结尾的数字)
2025年7月24日 05:00
businessman怎么念(businessman怎么读什么意思)
2026年8月29日 10:15
candidate的由来(什么是bug啊还有什么是beta)
2026年5月29日 05:45
不会java可以学javaweb吗(web 开发者需要会java吗)
2025年11月25日 10:00
competition怎么说(competition翻译一下)
2026年3月31日 22:15
winxp如何用汇编(如果在windows下没有任何现成编译器,怎样用机器语言(或汇编语言) 编写程序)
2025年9月14日 09:00
java编程规范单行(JAVA中单行注释和多行注释是什么意思我没弄明白,能解释一下么举个例子也好,谢谢~!)
2026年3月11日 01:15
eclipse连接sql server(eclipse连接sql server2008r2jar包导进去了还是显示驱动有问题怎么办)
2026年1月22日 20:30
android源码调试(如何调试Android Framework)
2025年11月18日 07:45
java经典100例算法题(利用Java编写应用程序求100以内的全部素数)
2025年10月23日 20:00














