关于头文件的一道选择题
题目:
以下关于头文件,说法正确的是(B)
A、#include,编译器寻找头文件时,会从当前编译的源文件所在的目录去找
B、#include“filename.h”,编译器寻找头文件时,会从通过编译选项指定的目录去找
C、多个源文件同时用到的全局整数变量,它的声明和定义都放在头文件中,是好的编程习惯
D、在大型项目开发中,把所有自定义的数据类型、全局变量、函数声明都放在一个头文件中,各个源文件都只需要包含这个头文件即可,省去了要写很多#include语句的麻烦,是好的编程习惯。
知识点:
A、#include头文件有两种方式,一种是尖括号如<filename.h>、一种是双引号如“filename.h”,不同引用方式的查找路径也不一样。
<>的查找路径顺序为:
1、“-I dir1 –I dir2 ...”编译选项指定的路径目录;2、标准路径,即系统或用户配置的路径,如/usr/include,/usr/local/include等; 3、不会在当前目录下寻找头文件;
“”的查找路径顺序为:
1、当前目录;2、“-I dir1 –I dir2 ...”编译选项指定的路径目录;3、标准路径
B、正确
C、多个源文件共用一个全局变量,一般通过extern在头文件.h中声明该变量,然后在源文件.cpp中定义,如果在头文件中定义的话,多个源文件同时引用该头文件,会造成重复定义的错误。
关于声明,根据C++标准的规定,一个变量声明必须同时满足两个条件,否则就是定义:
(1)声明必须使用extern关键字;(2)不能给变量赋初值
extern int a; //声明
int a; //定义
int a = 0; //定义
extern int a =0; //定义
D、并不是所有的东西都要放到同一头文件里面,可以根据需要放到不同的头文件中
转载于:https://www.cnblogs.com/AndyJee/p/4462692.html
关于头文件的一道选择题相关推荐
- c malloc 头文件_C/C++求职者必备 23 道面试题,一道试题一份信心!
1. Static有什么用途? (1)函数体内static变量的作用范围是该函数体,该变量的内存只被分配一次,因此它的值在下次调用时不变: (2)模块内的static全局变量同样只能在该模块内的函数访 ...
- 学习笔记15-C语言-预处理指令、条件编译、头文件
预处理指令: 程序猿编写的代码不是标准C代码,并不能被真正的编译器索编译,需要一段程序把代码翻译一下. 翻译的过程叫做预处理,被翻译的代码叫做预处理指令,以#开头的都是预处理指令查看预处理的过程:gc ...
- 关于使用C++万能头文件时定义y1报编译错误的那点事
事情是这样发生的,我在写一道网格求最短路径的题,在全局变量中定义了名为y1的变量,结果编译错误了. 肉眼排错五分钟后没有结果,于是我把代码删成这样: #include <bits/stdc++. ...
- C语言中的头文件与原文件
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句, ...
- C语言中,头文件的作用,头文件和源文件的关系(转)
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语 ...
- 头文件和源文件的关系
一.关于头文件和源文件之间的关系,理解把握要点在于: 1.头文件是给编程开发人员看的,而源文件是给编译器看的: 2.在#include头文件时,编译器直接把相应的头文件复制粘贴到源文件的相应位置: 3 ...
- OpenCV 笔记(05)— opencv.hpp 头文件作用(是其它所有头文件的全集)
在编辑器中通过点击 #include "opencv2/opencv.hpp" 头文件就可以看到该头文件的定义如下 #ifndef OPENCV_ALL_HPP #define O ...
- linux 下根据cpp文件快速书写头文件
假设我们现在有一个hello.cc文件,我们如果想要书写它的头文件hello.h,使用如下的命令即可: cat hello.cc | grep "^\w.*)$" > hel ...
- C++ .h(头文件) 与 .cpp(源文件) 的使用
.h 文件: .h是头文件 ,里面主要是写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等, 注意.h文件写的时候有特定的格式就是开头和结尾 #ifndef TEST_HEAD ...
最新文章
- 使用websploit在局域网全自动渗透
- Unet实现图像分割(一)
- OSPF路由聚合实验(详细)
- Android开发学习笔记:Gallery和GridView浅析
- gnuplot_i 文件的说明,翻译成的中文
- 华为微型计算机b515,华为MateStation B515台式机曝光:五种配置
- PHP学习之六:预定义常量
- node link 踩坑记录
- sql中带in条件的查询及提高效率
- javascript删除数组某个元素
- android原生ios,Windows Phone的原生iOS/Android应用程序
- Java中的跨站请求伪造
- 勒索软件不可破解?谁在标题党
- html设计一个调查问卷页面,如何设计一个网页调查问卷?
- 如何通过Flow制作简单的工作流 - 请假审批2
- 无限火力无法连接到服务器,“无限火力”回来啦!连拳头都要世界聚焦于你 全新7777装备即将上线!...
- struck.unpack
- 在线测试输入输出语法的测试
- 点宽与江苏大学建设量化金融实训平台项目
- 旧手机先别扔,余承东:留着升级一下鸿蒙
热门文章
- 什么是PV UV PR值
- 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--数码管电路驱动(八)
- tensorflow单变量线性回归
- python寻找1000以内的阿姆斯特朗数
- tinymce引入后未显示_继金博大后再弃一子!大商接连关闭在郑亏损店面,未来或布局高端购物中心...
- Varnish——CDN加速的实现(多个后端服务器实现负载均衡、虚拟主机)
- 在recovery模式下命令控制手机_安卓手机开机密码忘记,解锁教程
- NameError: name ‘List‘ is not defined
- dpkg: error processing package sunloginclient (--install): dependency problems - leaving unconfigur
- 05NumPy--5.3数组运算