黑马程序员技术交流社区
标题:
#ifndef XXXX #define XXXX #endif是什么?
[打印本页]
作者:
葬花桥
时间:
2014-4-22 15:36
标题:
#ifndef XXXX #define XXXX #endif是什么?
本帖最后由 葬花桥 于 2014-4-22 19:02 编辑
加不加上面的代码程序都没问题,它们有什么作用?求指教
作者:
愿我能
时间:
2014-4-22 16:05
条件编译
#if 条件1 2 ...code1... 3 #elif 条件2 4 ...code2... 5 #else 6 ...code3... 7 #endif
复制代码
1> 如果条件1成立,那么编译器就会把#if 与 #elif之间的code1代码编译进去(注意:是编译进去,不是执行,很平时用的if-else是不一样的)
2> 如果条件1不成立、条件2成立,那么编译器就会把#elif 与 #else之间的code2代码编译进去
3> 如果条件1、2都不成立,那么编译器就会把#else 与 #endif之间的code3编译进去
4> 注意,条件编译结束后,要在最后面加一个#endif,不然后果很严重(自己思考一下后果)
5> #if 和 #elif后面的条件一般是判断宏定义而不是判断变量,因为条件编译是在编译之前做的判断,宏定义也是编译之前定义的,而变量是在运行时才产生的、才有使用的意义
感觉和if语句类似,不过他们中间放的是代码,而不是语句,可以利用if条件语句来帮助记忆
作者:
dawn.dai
时间:
2014-4-22 17:47
本帖最后由 dawn.dai 于 2014-4-22 17:59 编辑
简单说就是代码控制
#ifndef
xxx //如果条件为真就执行括号内的程序,反之不执行#ifdef作用相反
{
#define xxx
{
//声明、程序
}
}
#endif
你说的这个应该是.h文件里的防重复声明吧,在文件内容很多时,有可能出现声明过又重新申明的,虽然不影响程序运行,但是很多的情况下
会影响性能,所以用这种预处理控制,如果没有声明过才运行声明部分的代码。
作者:
葬花桥
时间:
2014-4-22 19:00
dawn.dai 发表于 2014-4-22 17:47
简单说就是代码控制#ifndef xxx //如果条件为真就执行括号内的程序,反之不执行#ifdef作用相反
{
#def ...
明白了,3Q
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2