(转)#ifndef的用法】的更多相关文章

预编译就是在对源文件进行处理之前(如在语法扫描和分析之前),先处理预处理部分,精简代码,然后再进行编译. 预处理命令有:#include 文件包含.#define 宏定义.以及要重点讲的#if.#ifdef.#else.#endif.#ifndef 条件编译.这里讲的是条件编译. 条件编译,分下面三种情况: 一. #ifdef_XXXX 程序段1 #else 程序段2 #endif 表示的是,如果XXXX被宏定义过,即 if (#define XXXX),则执行程序段1,否则执行程序段2,执行后…
作用:防止头文件的重复包含和编译 定义 #ifndef x #define x ... #endif 这是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等.实际上确切的说这应该是预处理功能中三种(宏定义,文件包含和条件编译)中的一种----条件编译. C语言在对程序进行编译时,会先根据预处理命令进行“预处理”.C语言编译系统包括预处理,编译和链接等部分. #ifndef x //先测试x是否被宏定义过 #define x //如果没有宏定义下面就宏定义x并编译下面的…
原文链接:http://wenku.baidu.com/link?url=c4doqVo3U429RkwTN5eaJIfD2rEu-1bLKKQXuqO8drmL359PhUjVmzC7P94wBY90bqYjPBRiuujahij4AM_06OkiOThB3v91fXexqpIukG_ 定义 #ifndef x #define x ... #endif   这是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等.实际上确切的说这应该是预处理功能中三种(宏定义,文件包…
背景: 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,会引起大量的声明冲突,这时候需要:把头文件的内容都放在#ifndef和#endif中 #ifndef <标识> #define <标识> ...#endif <标识>在理论上来说可以是自由命名的,但每个头文件的这个"标识"都应该是唯一的. 标识的命名规则一般是 头文件名全大写+前后加…
ifndef是 if not define 的缩写,一种宏定义.它是预处理功能中三种(宏定义,文件包含和条件编译)中的第三种--条件编译. 其使用方式是: #define X ... #endif //c语言在对程序进行编译时,会先根据预处理命令进行预处理,C语言编译系统包括预处理,编译和链接等部分. #ifndef X //先测试是否被宏定义过 #define X 程序段1//如果X没有被宏定义过,定义X,并编译程序段1: #else 程序段2 //如果X已经定义过了则编译程序段2 的语句,忽…
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译.这样做的好处是,经过处理后的代码,将会变的很精短.  关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了.这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明.以下分3种情况: 1:情况1: #ifdef _XXXX ...程序段1... #else ...程序…
#pragma once 与 #ifndef 的作用 (1)在C/C++中,在使用预编译指令#include的时候,为了防止重复引用造成二义性. (2)在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别. #pragma once 与 #ifndef 的用法 #pragma once #pragma once #ifndef #ifndef _CODE_BLOCK #define _CODE_BLOCK // code ... #endif // _CODE_…
很多宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句.     条件编译命令最常见的形式为:     #ifdef 标识符     程序段1     #else     程序段2     #endif          它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1…
由于对#ifndef的用法不太理解,在询问了老师#ifndef的含义以及查找资料后,对#ifndef总结了以下几点: <1> #ifndef是宏定义的一种,是三种预处理功能(宏定义,文件包含和条件编译)中的其中一种:条件编译. <2> 条件指示符#ifndef的作用和目的是:避免变量的重复定义,防止重复包含和编译同一个头文件.例如:有两个文件同时include了div.h这个文件,这两个文件其中一个先编译了,那么_DIV_H_已经被定义了,当编译第二个文件的时候,在#ifnef的时…
https://www.cnblogs.com/agnily/p/5848768.html 1.先看#ifdef的用法: #define KEY1_PA0 #ifdef KEY1_PA0 -------------第一段----------------- #define macKEY1_GPIO_CLK RCC_APB2Periph_GPIOA #define macKEY1_GPIO_PORT GPIOA #define macKEY1_GPIO_PIN GPIO_Pin_0 #else //…
预处理指令 C语言提供的预处理指令主要有:宏定义.文件包含.条件编译 宏定义 不带参数的宏定义 1>一般形式 #define 宏名 字符串 比如#define A 10 2>作用 它的作用是在编译预处理时,将源程序中所有"宏名"替换成右边的"字符串",常用来定义常量. 3>使用习惯及注意 宏名一般用大写字母,以便与变量名区别开来,但用小写也没有语法错误 对程序中用双引号扩起来的字符串内的字符,不进行宏的替换操作. 在编译预处理用字符串替换宏名时,不…
这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部 分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句.     条件编译命令最常见的形式为:     #ifdef 标识符     程序段1     #else     程序段2     #endif          它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序…
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译.这样做的好处是,经过处理后的代码,将会变的很精短.   关于预处理命令中的文件包含(#i nclude),宏定义(#define),书上已经有了详细的说明,在这里就不详述了.这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明.以下分3种情况: 1:情况1:#ifdef _XXXX...程序段1...#else...程序段2…
先来看个例子: #define TARGET_LITTLE_ENDINA 1 #define TARGET_BIG_ENDINA 0 #ifdef TARGET_LITTLE_ENDINA call little endina function #else call big endina function #endif 不管把 TARGET_LITTLE_ENDINA 和 TARGET_BIG_ENDINA 定义成 0 或者 1,甚至后面不写这个 0 或者 1 ,调用的都是 little end…
c语言中条件编译相关的预编译指令,包括  #define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define            定义一个预处理宏#undef            取消宏的定义 #if                   编译预处理中的条件命令,相当于C语法中的if语句#ifdef              判断某个宏是否被定义,若已定义,执行随后的语句#ifndef            与#ifdef…
第一章 灵魂--指针 101. p++ 请分析下述代码的输出结果 int main() { char* p1 = "China"; char* p2, * p3; p2 = (); memset(p2, , ); while(*p2++ = *p1++); printf("%s\n", p2); ; } 答案:输出为空. 102. 打印内存地址 请问在printf打印函数中一般用什么形式打印变量内存地址? 答案:最常用的打印地址方式是%p和0x%x两种. 103.…
这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句. 条件编译命令最常见的形式为: #ifdef 标识符 #else程序段2 #endif 它的作用是: 当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2. 其中#else部分也可以没有,即: #ifd…
转自:https://blog.csdn.net/zhangchiytu/article/details/7563329 先看个例子:#define TARGET_LITTLE_ENDINA 1#define TARGET_BIG_ENDINA   0 #ifdef TARGET_LITTLE_ENDINAcall little endina function#elsecall big endina function#endif不管把 TARGET_LITTLE_ENDINA 和 TARGET_…
假如现在要开发一个C语言程序,让它输出红色的文字,并且要求跨平台,在 Windows 和 Linux 下都能运行,怎么办呢?这个程序的难点在于,不同平台下控制文字颜色的代码不一样,我们必须要能够识别出不同的平台.Windows 有专有的宏_WIN32,Linux 有专有的宏__linux__,以现有的知识,我们很容易就想到了 if else,请看下面的代码: #include <stdio.h> int main(){ if(_WIN32){ system("color 0c&quo…
问题:ifndef/define/endif”主要目的是防止头文件的重复包含和编译,偶只知道这个概念不懂的是怎么个用法,和为什么要用它~~高手请指点一下~~谢谢~~~!!! --------------------------------------------------------------------------------------------------用法: .h文件,如下:#ifndef XX_H#define XX_H...#endif 这样如果有两个地方都包含这个头文件,就…
1. 文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突. 还是把头文件的内容都放在#ifndef和#endif中吧.不管你的头文件会不会被多个文件引用,你都要加上这个.一般格式是这样的: #ifndef <标识>  #define <标识> ......  ...... #endif <标识>在理论上来说可…
在网上看到了感觉作者总结得很好,作者辛苦了! #ifndef#define#endif的用法 文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个 C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突.还是把头文件的内容都放在#ifndef和#endif中吧.不管你 的头文件会不会被多个文件引用,你都要加上这个.一般格式是这样的: #ifndef <标识> #define <标识…
The special operator defined is used in #if and #elif expressions to test whether a certain name is defined as a macro. defined name and defined (name) are both expressions whose value is 1 if name is defined as a macro at the current point in the pr…
1.文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突. 还是把头文件的内容都放在#ifndef和#endif中吧.不管你的头文件会不会被多个文件引用,你都要加上这个.一般格式是这样的: #ifndef <标识> #define <标识> ...... ...... #endif <标识>在理论上来说可以是自…
[转] #ifndef#define#endif的用法(整理)    原作者:icwk  文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突. 还是把头文件的内容都放在#ifndef和#endif中吧.不管你的头文件会不会被多个文件引用,你都要加上这个.一般格式是这样的: #ifndef <标识> #define <标识>…
文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突. 还是把头文件的内容都放在#ifndef和#endif中吧.不管你的头文件会不会被多个文件引用,你都要加上这个.一般格式是这样的: #ifndef <标识> #define <标识> ...... ...... #endif <标识>在理论上来说可以是自由命…
ifndef/define/endif”主要目的是防止头文件的重复包含和编译 比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突. 还是把头文件的内容都放在#ifndef和#endif中吧.不管你的头文件会不会被多个文件引用,你都要加上这个 1.用法::标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h .h文件下 #ifndef XX_H     //…
想必很多人都看过“头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?头文件被重复引用了,会产生什么后果?是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码? 1. 其实“被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的.如:存在a.h文件#include "c.h"而此时b.cpp文件导入了#include &q…
为了能简单的看看某些linux内核源码,复习了一下c语音,今天汇总了一下关于宏定义的相关内容: 一.ifndef/define/endif用法: .h文件,如下: #ifndef XX_H #define XX_H ... #endif 这样如果有两个地方都包含这个头文件,就不会出现两次包含的情况 .. 因为在第二次包含时 XX_H 已经有定义了,所以就不再 include了 ------------------------------------------------------------…
想必很多人都看过“头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?头文件被重复引用了,会产生什么后果?是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码? 1. 其实“被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的.如:存在a.h文件#include "c.h"而此时b.cpp文件导入了#include &q…