首页 > 试题广场 >

对于#include 和 #include “filena

[单选题]
对于#include   <filename.h> 和 #include “filename.h”,以下说法错误的是( )。
  • #include <filename.h>只搜索标准库路径
  • #include “filename.h”只搜索用户工作路径
  • #include <filename.h>搜索范围比#include “filename.h”小
  • 两者有时可能等价
推荐
【正确答案】B
【解析】#include <> 编译器直接从系统类库目录里查找头文件,如果类库目录下查找失败,编译器会终止查找。
#include "" 编译器默认从当前文件所在目录下查找头文件,如果查找失败,再从项目工程中设置的头文件引用目录查找,在 Linux GCC 编译环境下,则一般通过使用 -L 参数指定引用目录,如果项目配置的头文件引用目录中仍然查找失败,再从系统类库目录里查找头文件。
#include <> 一般用于包含系统头文件,诸如 stdlib.h、stdio.h、iostream 等;#include "" 一般用于包含自定义头文件,比如我们自定义的 test.h、declare.h 等。

#include 编译指令知识点讲解】
更多C++基础专业知识讲解,点击链接即可查看
编辑于 2021-11-17 12:49:39 回复(0)
// #include <> /* only search the std include path */
// #include "" /* (1) CWD + (2) STD */

发表于 2015-09-02 21:27:26 回复(0)
B
发表于 2014-11-06 23:56:01 回复(0)
A:正确,B 错的,
首先 #include<> 和 #include"" 只是最先搜索的路经不一样。
#include<>  :表示只从从标准库文件目录下搜索,对于标准库文件搜索效率快。
#include""    :表示首先从用户工作目录下开始搜索,对于自定义文件搜索比较快,然后搜索整个磁盘。
发表于 2015-08-19 15:34:44 回复(2)
B
#include""从当前工作路径开始搜索,然后扩展到标准库路径。

编辑于 2018-10-22 08:54:41 回复(0)

采用"< >"方式进行包含的头文件表示让编译器在编译器的预设标准路径下去搜索相应的头文件,如果找不到则报错。

例如:VS2008的安装目录\Microsoft Visual Studio 9.0\VC\include下面就包含了标准库的头文件。

第二种方式表示先在工程所在路径下搜索,如果失败,再到系统标准路径下搜索。

所以,特别要注意的是,如果是标准库头文件,那么既可以采用<>的方式,又可以采用" "的方式,而用户自定义的头文件只能采用" "的方式。

例如,如下这种方式是正确的:

#include 效率较高

#include "iostream"效率较低

如下这种方式是不正确的:

#include diy.h是我们自己创建的头文件

发表于 2016-03-25 16:50:39 回复(0)
#include<>只搜索标准库路径
#include""从当前工作路径开始搜索,然后扩展到标准库路径。
发表于 2015-01-21 19:57:34 回复(0)
#include<>只从标准库中寻找,#include""先从当前路径找,如果找不到就去标准库中找,但是D选项感觉有点疑问啊,如果两个等价的话,那么该库应该是放在标准库下,这样才会近似等价吧😑😑😑😑😑
发表于 2021-08-21 23:10:58 回复(1)
这道题有问题吧,因为另外一道题是这样的:

当用#include“file.h”时,先搜索当前工作目录,如果没有,再去搜索标准库,库没有再搜索资源库;

当用#include<file.h>时,编译器先从标准库开始搜索,如果没再搜索资源库目录,若还未找到则搜索当前工作目录。
发表于 2018-04-01 10:23:01 回复(0)
A正确 B错了
使用尖括号表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找; 使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。

发表于 2017-05-10 20:22:20 回复(0)
  1. #include <filename.h> 这种形式用于包含标准库的头文件。编译器会在标准系统目录中搜索名为filename.h的头文件,并将其包含到程序中。这种形式通常用于包含标准的头文件。

  2. #include "filename.h" 这种形式用于包含自定义的头文件或者非标准的头文件。编译器会首先在当前源文件所在的目录中搜索名为filename.h的头文件,如果找不到,才会在系统目录中搜索。这种形式通常用于包含自定义的头文件或者第三方库的头文件。

因此,两种方式的主要区别在于编译器搜索头文件的路径不同,一个是先在系统目录中搜索,另一个是先在当前源文件目录中搜索。

发表于 2023-11-30 19:23:13 回复(0)
工作目录与标准库目录
发表于 2023-09-23 22:20:06 回复(0)
c能解释一下吗

发表于 2022-07-29 20:23:59 回复(0)
自定义的头文件首先会在用户的当前工作目录下查找,如果没找到,再去系统的头文件目录查找
发表于 2022-06-02 14:11:44 回复(0)

参考 gcc 官方文档

By default, the preprocessor looks for header files included by the quote form of the directive #include "file" first relative to the directory of the current file, and then in a preconfigured list of standard system directories. For example, if /usr/include/sys/stat.h contains #include "types.h", GCC looks for types.h first in /usr/include/sys, then in its usual search path.

可以清楚的看到,<>搜索已经配置过的标准系统目录.
"" 现在当前当前编辑文件所在的目录中进行搜索,然后搜索已经配置过的标准系统目录

发表于 2021-02-24 13:43:50 回复(0)
C语言中两种方式使用#include命令, #include <>与#include ””的区别 一种是在包含指令#include后面”<>”将头文件名括起来。这种方式用于标准或系统提供的头文件,到保存系统标准头文件的位置查找头文件。 另一种是在包含指令#include后用双引号””将头文件包括起来。这种方式常用与程序员自己的头文件。用这种格式时,C编译器先查找当前目录是否有指定名称的头文件,然后在从标准头文件目录中查找。
发表于 2020-11-03 11:58:41 回复(0)
答案:B
#include "xx.h"是用来引入非标准库的头文件,编译器从用户的工作目录开始搜索;
过程如下:编译器从程序的源文件所在的目录中查找,若不存在该头文件,则再去系统默认的目录去找;

(2374)#include<xx>:引用标准库头文件,编译器从标准库目录开始搜索;
过程如下:编译器只在系统目录的目录或者括号内的路径进行查找;

此外:#include的作用其实就是寻找后面文件,并将该文件的内容拷贝一份到当前的文件里面来;
如有错误,欢迎指正

发表于 2020-03-13 12:05:38 回复(0)
#include<>只搜索标准库文件;
#include""从当前工作路径开始搜索,然后扩展到标准库路径
发表于 2019-03-06 15:15:54 回复(0)
#include <>只搜索引用目录,#include ""则先搜索当前工作路径,若未找到才搜索引用目录,故B的说法错误,选B。
发表于 2018-11-26 23:00:09 回复(0)
粗心
发表于 2018-07-30 08:23:48 回复(0)
// #include <> /* only search the std include path */ 
// #include "" /* (1) CWD + (2) STD */ 
发表于 2018-05-08 21:04:18 回复(0)