A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 葬花桥 中级黑马   /  2014-4-22 15:36  /  1385 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 葬花桥 于 2014-4-22 19:02 编辑

加不加上面的代码程序都没问题,它们有什么作用?求指教

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
条件编译
  1. #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条件语句来帮助记忆
回复 使用道具 举报 1 0
本帖最后由 dawn.dai 于 2014-4-22 17:59 编辑

简单说就是代码控制#ifndef   xxx    //如果条件为真就执行括号内的程序,反之不执行#ifdef作用相反
{
#define  xxx
{
//声明、程序
}
}
#endif
你说的这个应该是.h文件里的防重复声明吧,在文件内容很多时,有可能出现声明过又重新申明的,虽然不影响程序运行,但是很多的情况下
会影响性能,所以用这种预处理控制,如果没有声明过才运行声明部分的代码。
回复 使用道具 举报 1 0
dawn.dai 发表于 2014-4-22 17:47
简单说就是代码控制#ifndef   xxx    //如果条件为真就执行括号内的程序,反之不执行#ifdef作用相反
{
#def ...

明白了,3Q
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马