看到有的头文件的代码就是一堆的宏定义,比方说这样:
#ifndef A
#define A
#endif
#ifndef B
#define B
#endif
............
这有什么用?
我目前的认识是,头文件里放函数声明,源文件里放函数体,就是搞不懂弄这么一堆宏定义干什么。
条件编译也是,如果不编译的话,不写就是了,何必写一堆最后又不编译的东西。
æ¡ä»¶ç¼è¯å±äºä¸ç§å®å®ä¹ä¸çä¸ç§ï¼æ¡ä»¶æ示符çæ主è¦ç®çæ¯é²æ¢å¤´æ件çéå¤å å«åç¼è¯ï¼ä¾å¦:ä¸ä¸ªcæ件å å«åä¸ä¸ªhæ件å¤æ¬¡ï¼å¦æä¸å #ifndefå®å®ä¹ï¼ä¼åºç°åééå¤å®ä¹çé误
æ¡ä»¶ç¼è¯å¸¸ç¨çæå个é¢å¤çå½ä»¤ï¼#ifã#elseã#elifã#endifã
#ifæ令çå½¢å¼ä¸ºï¼
#if 常é表达å¼#ifåé¢ç常é表达å¼ä¸ºå¼ï¼åç¼è¯å®ä¸#endifä¹é´ç代ç ï¼å¦åè·³è¿è¿äºä»£ç ãæ令#endifæ è¯ä¸ä¸ª#ifåçç»æã
#else被使ç¨æ¥æ å¿#ifçæ«å°¾å#elseåçå¼å§ãè¿æ¯å¿ é¡»çï¼å 为任ä½#ifä» æä¸ä¸ª#endifä¸ä¹å ³èã
#elifææ"else if"ï¼å®å½¢æä¸ä¸ªif else ifåµå¥è¯å¥ç¨äºå¤ç§ç¼è¯éæ©ã#elifåé¢è·ä¸ä¸ªå¸¸é表达å¼ï¼å¦æ表达å¼æ¯çï¼åç¼è¯å ¶åç代ç åï¼ä¸å¯¹å ¶ä»#elif表达å¼è¿è¡æ£æµï¼å¦å顺åºæµè¯ä¸ä¸åã常è§çå½¢å¼å¦ä¸ï¼
å½¢å¼1:
ãã#ifdef æ è¯ç¬¦å®çä½ç¨æ¯å½æ è¯ç¬¦å·²ç»ç±#defineå®ä¹è¿äº,åç¼è¯ç¨åºæ®µ1,å¦åç¼è¯ç¨åºæ®µ2ï¼ä¹å¯ä»¥ä½¿ç¨ç®åå½¢å¼
#ifdef æ è¯ç¬¦ãã
å½¢å¼2:
ã#ifndef æ è¯ç¬¦ããå®çä½ç¨æ¯å½æ è¯ç¬¦æ²¡æç±#defineå®ä¹è¿,åç¼è¯ç¨åºæ®µ1,å¦åç¼è¯ç¨åºæ®µ2 ï¼ä¹å¯ä»¥ä½¿ç¨ç®åå½¢å¼
ã#ifndef æ è¯ç¬¦å½¢å¼3:
ã#if 表达å¼ããå®çä½ç¨æ¯ å½â表达å¼âå¼ä¸ºçæ¶ç¼è¯ç¨åºæ®µ1ãå¦ååç¼è¯ç¨åºæ®µ2,ä¹å¯ä»¥ä½¿ç¨ç®åå½¢å¼
ãã# if 表达å¼å½¢å¼4:
#if 表达å¼1å®çä½ç¨æ¯å½â表达å¼1âå¼ä¸º1æ¶ç¼è¯ç¨åºæ®µ1ï¼è¡¨è¾¾å¼2çå¼ä¸ºçæ¯ç¼è¯ç¨åºæ®µ2,å¦åä¾æ¬¡é¡ºåºå¤æå°è¡¨è¾¾å¼nã
æåï¼æ¡ä»¶ç¼è¯çæ¡ä»¶æ¯ä¸ä¸ªå¸¸é表达å¼ï¼æ¯æé»è¾ä¸&&åæ||è¿ç®ã以ä¸åç§å½¢å¼çæ¡ä»¶ç¼è¯é¢å¤çç»æé½å¯ä»¥åµå¥ä½¿ç¨ï¼
æ è¯ç¬¦: å¨ç论ä¸æ¥è¯´å¯ä»¥æ¯èªç±å½åçï¼ä½æ¯ä¸ªå¤´æ件çè¿ä¸ªæ è¯ç¬¦é½åºè¯¥æ¯å¯ä¸çãæ è¯çå½åè§åä¸è¬æ¯å¤´æ件åå ¨å¤§åï¼ååå ä¸å线ï¼å¹¶ææ件åä¸çâ.âä¹åæä¸å线ï¼å¦ï¼stdio.hã
#ifndef _STDIO_H_C语言中条件编译的作用
条件编译属于三种宏定义中的一种,条件指示符的最主要目的是防止头文件的重复包含和编译,例如:一个c文件包含同一个h文件多次,如果不加#ifndef宏定义,会出现变量重复定义的错误 条件编译常用的有四个预处理命令:#if、#else、#elif、#endif。if指令的形式为:if 常量表达式代码块#endif#if后面的常量...
关于C语言的条件编译
作用一:编译生成的可执行代码或者只包含程序段1 或者只包含程序段2 ,可执行程序大小会变小;作用二:可以灵活的通过宏定义标识符实现同一函数的不同版本,例如 ifdef 标识符 func1(...) {...} else func1(...) {...} endif 这样func1函数通过宏定义可以有不同的实现 ...
C语言中的条件编译有什么作用
条件编译就是为了实现在满足一定条件时编译某一组语句,而再不满足条件时编译另一组语句!事实上,它确实与条件语句相似,但是它们是不一样的。条件语句中的各个语句都是要经过编译的,而条件编译中的部分语句不需要进行编译(请注意这儿是编译不是执行)。条件编译的作用在编写大型程序的时候就会相当的明...
ifndef define endif作用
ifndef、#define、#endif为C语言的3条预处理语句,主要用作条件编译。先介绍一下条件编译:一般情况下,源代码文件中的所有行都参加编译,但有时需要指定一部分代码在某个条件下才被编译,这就叫做条件编译。条件编译发生在预处理阶段,在C中,主要通过#if、#elif、#else、#ifdef、#ifndef、#endi...
#if #endif 是什么意思啊?
ifdef #endif是C语言的条件编译。条件编译是根据实际定义宏(某类条件)进行代码静态编译的手段。可根据表达式的值或某个特定宏是否被定义来确定编译条件。如下面的例子:#ifdef 标志符 程序段1 #else 程序段2 #endif 当定义了标志符则对程序段1进行编译,而没有定义标志符时则编译程序段2。
C语言 #ifdef #endif 是什么意思?
ifdef #endif是C语言的条件编译。一般情况下,源程序中所有的行都参加编译。但有时希望对其中一部分内容只在满足一定条件下才进行编译,即对一部分内容指定编译条件,这就是“条件编译”(conditional compile)。ifdef的一般形式:ifdef宏名 \/\/语句段 endif 作用:如果在此之前已定义了这样的宏名,则...
C语言中#if #else 有什么作用?
if是个预编译指令的田间编译指令 可以使用条件编译选择特定的代码节进行编译,而排除其他代码节。例如,可能需要编写调试语句来比较同一编程任务的不同方法的速度,或者可能需要本地化用于多种语言的应用程序。条件编译语句被设计为在编译时(而不是在运行时)运行。一般在C++里面有的,#if这类东西通场会...
#if #endif 是什么意思啊?
在C语言编程中,#if和#endif这一对符号具有特殊含义,它们构成了条件编译指令。这些指令在程序正式编译之前起作用,通过预处理机制对代码进行处理。#if是一个条件判断的开始,其后跟着一个条件表达式,而#endif则标志着这一条件编译区域的结束。如果满足#if中定义的条件,编译器会选择性地编译紧跟其后的...
endif是什么意思啊?
ifdef #endif是C语言的条件编译。一般情况下,源程序中所有的行都参加编译。但有时希望对其中一部分内容只在满足一定条件下才进行编译,即对一部分内容指定编译条件,这就是“条件编译”(conditional pile)。ifdef的一般形式:ifdef宏名 语句段 endif 作用:如果在此之前已定义了这样的宏名,则编译语句...
c语言程序,预编译的作用是什么
define 宏定义的替换 , 条件编译等,就是为编译做的预备工作的阶段,主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。c 编译系统在对程序进行通常的编译之前,先进行预处理。 c 提供的预处理功能主要有以下三 种:1)宏定义 #define...