C语言中的#ifndef、#def、#endif等宏(转)
来源:互联网 发布:苹果平板怎么淘宝开店 编辑:程序博客网 时间:2024/05/07 23:51
#ifndef x
#define x...
#endif
这是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等.实际上确切的说这应该是预处理功能中三种(宏定义,文件包含和条件编译)中的一种----条件编译。 C语言在对程序进行编译时,会先根据预处理命令进行“预处理”。C语言编译系统包括预处理,编译和链接等部分。
#ifndef x
//先测试x是否被宏定义过
#define x
//如果没有宏定义下面就宏定义x并编译下面的语句
...
#endif
//如果已经定义了则编译#endif后面的语句
条件指示符#ifndef检查预编译常量在前面是否已经被宏定义。如果在前面没有被宏定义,则条件指示符的值为真,于是从#ifndef到#endif之间的所有语句都被包含进来进行编译处理。相反,如果#ifndef指示符的值为假,则它与#endif指示符之间的行将被忽略。条件指示符#ifndef 的最主要目的是防止头文件的重复包含和编译。
头文件中的#ifndef
千万不要忽略了头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。
还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的:
#ifndef <标识>
#define <标识>
......
......
#endif
<标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h
#ifndef _STDIO_H_
#define _STDIO_H_
......
#endif
#if defined(OS_HPUX)&&(defined(HPUX_11_11)|| defined(HPUX_11_23)
// for HP-UX 11.11 and 11.23
#elif defined(OS_HPUX) && defined(HPUX_11_31
// for HP-UX 11.31
#elif defined(OS_AIX)
// for AIX
#else
…
#endif
- C语言中的#ifndef、#def、#endif等宏(转)
- c语言中的#ifndef、#def、#endif等宏是什么意思
- c语言中的#ifndef、#def、#endif等宏是什么意思 .
- C语言中的#ifndef、#def、#endif等宏
- c语言中的#ifndef、#def、#endif等宏是什么意思
- c语言中的#ifndef、#def、#endif等宏是什么意思
- c语言中的#ifndef、#def、#endif等宏是什么意思
- c语言中的#ifndef、#def、#endif等宏是什么意思
- #ifndef、#def、#endif等宏是什么意思 转
- C语言中用#if、#ifndef、(或者#ifndef)、#def、#endif等宏进行条件编译调试的技巧
- #ifndef、#def、#endif等宏是什么意思
- #ifndef、#def、#endif等宏是什么意思
- #ifndef、#def、#endif等宏是什么意思
- #ifndef、#def、#endif等宏是什么意思?
- #ifndef、#def、#endif等宏是什么意思
- #ifndef、#def、#endif等宏的含义
- #ifndef、#def、#endif等宏的含义
- #ifndef、#def、#endif等宏是什么意思
- 计算机视觉、机器学习相关领域论文和源代码大集合
- 根据条件批量删除sql中的表以及其他内容
- 数据库去重问题
- computeSampleSize
- AIX增加page space操作方法
- C语言中的#ifndef、#def、#endif等宏(转)
- 多个COM端口被占用如何解决
- rollback产生redo及logmnr查看日志内容
- 利用Radiogroup Radiobutton 实现滑动效果菜单
- 解决apt-get无法删除和安装软件的问题的方法
- 利用antixss防备xss[网络技术]
- Linux下的Source Insight+Ubuntu 10.04使用Wine安装Source Insight
- C语言枚举类型
- 射频微波最新资料大全