1. 头文件中的 ifndef/define/endif 干什么用?下面三题下载自网络,据说为某些公司面试真题,拿来练手
分析:一开始我直接跑题了,把这三个宏定义的功能分别写了出来,但后面看网上的答案,发现题目问的是这三个宏定义一起用时的作用,而且指明了在头文件中。
参考文章——#ifndef, #define, #endif 作用
部分原文:
#ifndef
它是if not define 的简写,是宏定义的一种,实际上确切的说,这应该是预处理功能三种(宏定义、文件包含、条件编译)中的一种----条件编译。
在c语言中,对同一个变量或者函数进行多次声明是不会报错的。所以如果h文件里只是进行了声明工作,即使不使用# ifndef宏定义,多个c文件包含同一个h文件也不会报错。
但是在c++语言中,#ifdef的作用域只是在单个文件中。所以如果h文件里定义了全局变量,即使采用#ifdef宏定义,多个c文件包含同一个h文件还是会出现全局变量重定义的错误。
使用#ifndef可以避免下面这种错误:如果在h文件中定义了全局变量,一个c文件包含同一个h文件多次,如果不加#ifndef宏定义,会出现变量重复定义的错误;如果加了#ifndef,则不会出现这种错误。
结合该博主的解答,这几个宏定义的作用可以总结为:防止因多次引用头文件造成变量重定义
2. include
分析:符号的不同影响的是编译器检索头文件路径的优先级,尖括号优先标准库路径,双引号优先工作路径。
答案:
对于#include
对于#include"filename.h",编译器先从用户的工作路径开始搜索filename.h,后去寻找系统路径,使得自定义文件较快。
参考文章——#include
3. const有什么用途?(请至少说明两种)
分析:我只能想到一种——声明变量为只读
答案:(仅供参考)
- 用做普通变量的只读属性的别名。通常这个别名只能获得这个变量的值,而不能改变这个变量的值。
- 用于函数的形参。常引用做形参,可以确保在函数内不会改变实参的值,所以参数传递时尽量使用常引用类型。
简化:
- 修饰一个普通变量使其属性变为只读。
- 修饰函数形参,保护实参不被修改。
参考文章——const有哪些作用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)