预处理,结构体
来源:互联网 发布:摄像头ip扫描软件 编辑:程序博客网 时间:2024/05/19 07:42
Q:宏定义的定义和类型。
A:宏定义是由源程序中的宏定义命令完成的,宏代换是由预处理程序自动完成的,在C语言中,宏定义分为有参和无参两种。无参宏宏名后不带参数,其定义的一般形式为:#define标识符 字符串;带参宏的参数为形参,其一般形式为:#define宏名(形参表) 字符串。
Q:无参宏的用途及其注意点。
A:无参宏常用于对程序中反复使用的表达式,例:#define M (y*y+3*y);该例中即用指定标识符M来代替M (y*y+3*y)。宏定义时需注意优先级的问题,确保定义内容满足所需。
宏定义是用宏名表示字符串宏展开时以该字符串取代宏名,是简单的替换,写在函数之外,如有错误,只能在编译已被宏展开后的源程序时被发现。
Q:带参宏的用途及其注意点。
A:带参宏调用时,用实参代替实参,宏名和形参表之间不能有空格出现。
Q:带参宏定义和自定义函数的区别。
A:在带参宏定义中,形参不分配内存单元,不需作类型定义;宏定义中实参有具体的值,要用它们代替形参,必须作类型说明。即带宏参中,只是符号代换,不存在值传递问题。宏定义中的形参是标识符,而宏调用中的实参可以是表达式。
Q:文件包含中””和<>的区别。
A:文件包含中,用<>表示在包含文件目录中去查找,而不是在源文件目录中查找;用””则表示首先在当前的源文件目录中查找。文件包含允许嵌套,即在一个被包含的文件中可以包含另一个文件。
Q:条件编译的三种形式和各自功能。
A:第一种形式:
#ifdef标识符
程序段1
#else
程序段2
#endif
它的功能为若标识符被定义过,则编译程序段1,否则编译程序段2,else可以不存在。
第二种形式:
#ifndef标识符
程序段1
#else
程序段2
#endif
它的功能与第一种相反,即若标识符未被定义过,则编译程序段1,否则编译程序段2,else可以不存在。
第三种形式:
#if常量表达式
程序段1
#else
程序段2
#endif
它的功能为若常量表达式为真,则编译程序段1,否则编译程序段2,else可以不存在。
Q:宏定义中的#和##.
A:宏定义中#的功能是将其后的宏参进行字符串化操作,##则是连接符,用于连接两个Token使之连接为一个Token,不一定用于宏的变量。
- 预处理,结构体
- 预处理与结构体
- 预处理、结构体预习
- 预处理、结构体
- 预处理,结构体
- 结构体对齐预处理指令
- 预处理与结构体简述
- C语言-预处理、结构体
- 预处理和结构体2
- 关于预处理和结构体
- 黑马程序员_C_结构体与预处理
- 09-结构体指针和预处理指令
- C语言08字符串 & 预处理 & 结构体
- C语言字符串 & 预处理 & 结构体八
- 预处理和结构体的问题
- 预处理、结构体10个问答
- linux c 预处理和结构体
- C语言预处理、结构体和make的使用--C语言预处理命令
- ►奇说 总004期:《密码学的危机和机遇》10.26
- sublime text3当前窗口只能显示一个文件的问题?
- 快递员能开你家锁了,问你怕不怕?
- 列表初始化之 object[ { arg1, arg2, ... } ]
- 用友一面总结
- 预处理,结构体
- 建造者模式
- 51nod 1442 士兵的旅行(最大流)
- Java_日历生成(Lab 4_Exercise 5)
- windwsserver 2008+IIS7发布web拒绝访问
- 第三章 求100以内的素数
- 使用BOOST::Interprocess完成内存共享与同步
- bzoj1087[SCOI2005][互不侵犯King] 状压DP
- 降低Face ID精度提高手机产量?苹果:完全没这事 | 行业