条件编译 #ifndef

您所在的位置:网站首页 重复define 条件编译 #ifndef

条件编译 #ifndef

2024-07-14 01:46:54| 来源: 网络整理| 查看: 265

1.下划线“__”属于编程风格的内容,对程序没有影响。不用下划线也可以,用几个下划线也由个人习惯。

 2.其实质是一个宏名。由此我们可以防止发生重复定义或声明。

假设你的头文件名为head.h,根据习惯,我们声明一个宏HEAD_H,对应这个头文件,在头文件中开始的地方和结尾的地方加上   对HEAD_H的声明和判断,头文件Head.h如下:  #ifndef   HEAD_H  #define   HEAD_H  ……(头文件内容)  #endif  这样,头文件可以避免被多次包含。头文件中定义的变量不存在重复声明或定义。

 

 

3. __FILE__,__LINE__   都是与定义的宏,使用_   和   __   开始的函数一般都是专用的函数,一般都是于特定系统相关的,如果要想有更好的移植性,应该避免使用。

 

一般只有已经广泛使用的系统库函数和宏才有资格使用_甚至__打头,为的是不与用户定义的名字      冲突,所以B.Stroustup在《The   C++   Programming   Language》中告诫我们一般不要使用_或__      打头的标志符,这也是一个编程风格的问题吧。

 

先回答你的问题。 1 是可以写成 LED.H只不过你接下来要写一句#defined LED.H 因为#ifndef 后面的字符串 不管是 LED.H还是__LED_H和头文件的名字没有半毛钱关系。只不过是为了读程序的时候方便而已。其实那个字符串只要合法的就行了。

2 用法 #ifndef 字符串 #define 上述字符串 #endif 一般放在头文件里面,作用就是以防你在.c文件里面不小心重复包含头文件的时候不会报错。 例如,现在你有 main.c LED.H 两个文件。 如果你在main函数里面两次包含头文件LED.H。即 #include “LED.h” #include “LED.h” int main(void) { return 0; } 那么你的程序肯定会报错。因为你的头文件重复添加了。 但是如果你在LED.H里面动一点手脚就把问题解决了,在LED.H添加如下代码 #ifndef abcdefg #define abcdefg #include "stm32f10x.h" void led_init(void); ...//其他函数声明 #endif 就可以把问题解决。 分析如下:#ifndef 的是if no define----”如果没有定义“的意思。带#的是预编译命令,在编译之前执行。 如果没有定义abcdefg 那么就#define abcdefg 定义了abcdefg 当你多次包含LED.H这个头文件的时候。第一次肯定是没有定义的,所以肯定会执行 #define abcdefg 但是第二次,第三次,..以后再包含的时候,由于第一次已经定义过了abcdefg字符串,所以第二次的#ifndef abcdefg 不成立,所以往下的语句就不会执行。那么就不会重复包含头文件了。也不会把头文件里面声明过的函数再继续重复声明了。也就不会报错了。所以记住一点:#ifndef 在头文件里的用法是通过判断这个字符串是否被定义过,从而决定是否跳过某些语句来达到,条件编译,防止报错的效果的。 当然条件编译的用处很灵活看你怎么用。给楼主总结一下3种条件编译 第一种: #if 表达式 程序段1 #endif 第二种: #ifndef 表达式 程序段2 #endif 第三种 #ifdefine 表达式 程序段3 #endif 以上是三种基本的条件编译,当然可以嵌套。还可以加#elsedefine 不过elsedefine的宏命令简写我忘记是什么了,哈哈。所以就不贴上了。反正用法和if-else 一样,都是通过判断表达式是否为真,来决定往下的程序段是否被编译。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭