此帖出自微控制器 MCU论坛
最新回复
prcxjb答得很形象,这里我补充几点:
1. #ifndef 后面跟的不是头文件名称而是标识符。编译器的预处理分三种,宏定义、头文件包含和条件编译。#ifndef 属于条件编译。
2. #ifndef 的最主要目的是防止头文件的重复包含和编译。例如你的工程有两个.C文件,这两个文件都include了同一个头文件,这个头文件里又定义了全局变量。于是问题来了,大量的声明就会发生冲突。
解决这个问题有2个办法,一是把所有变量定义放在.c文件里,.h文件就只放申明。另一个办法就是用条件编译,防止重复包含。
3. 建议在你写的每一个.H文件里都加上这条语句。至于后面跟的标示符,尽量采用一个固定格式,我个人喜欢用 "__文件名_H__"这种格式,标示专门为头文件使用。
4. #ifndef的另外一种用法是用来定义一些编译参数,比如LCD的显示模式,是横向显示模式还是纵向显示模式。我们可能在多个文件中都会使用,用的时候为了防止漏定义或者定义冲突,就需要用#ifndef这个语句。
4. 后面还加一条建议,我建议每个程序员有时间都多看点编译原理的书。
triton.zhang
QQ:906411450
详情
回复
发表于 2012-3-28 22:10
| ||
|
||
| |
|
|
建议看一下C
此帖出自微控制器 MCU论坛
| ||
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
EEWorld Datasheet 技术支持