很多程序员写代码,可能没有仔细研究一些细节问题,比如今天说的#include相关的内容。

01

关于#include

首先,#include为预处理语句,那么什么是预处理语句呢?预处理语句最明显的标志是一些行首以#开始的特殊语句。例如:#include、 #define、 #if等就是预处理语句。在程序的其它编译处理(词法分析、语法分析、代码生成、优化和连接等)之前,先进行这些语句的分析处理。 在编译工具中,有一个叫预处理器,预处理器发现 #include 指令后,就会进行一些预处理操作。

02

#include的定义

如果你在看一些C/C++教程,那么你可能会发现,有些教程涨的#include命令写作#include ,但有时候又会出现#include "文件名"。你会很疑惑,到底哪个是对的呢?为什么要有这两种不同的写法呢?1.#include  系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。 2.#include "xxx.h"用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找,然后在到C++安装目录(比如VC中可以指定和修改库文件查找路径,Unix和Linux中可以通过环境变量来设定)中查找,最后在系统文件中查找。 这两种写法都是正确的写法,但是它们却是有区别的。我们知道C/C++已经有一些编写好的头文件(比如标准函数库等),它们存放在VC++的Include文件夹里。当我们使用#include 命令时,编译器就到这个文件夹里去找对应的文件。显然,用这种写法去包含一个我们自己编写的头文件(不在那个Include文件夹里)就会出错了。所以包含C++提供的头文件时,应该使用尖括号。相反地,#include "文件名"命令则是先在当前文件所在的目录搜索是否有符合的文件,如果没有再到Include文件夹里去找对应的文件。因此,无论这个文件是C++提供的还是自己编写的,使用#include "文件名"命令一定是正确的。这也正是书中本节之前的程序一律使用#include "文件名"命令的原因。

03

关于尖括号

C++标准中,包含C++提供的头文件并不是写作#include ,如#include 的写法是过时的。正确的写法是#include ,并且要使用std名字空间。有些程序中会有using namespace std;就是按照这种标准书写的。名字空间也称为命名空间,主要是用来避免大型程序开发中的标志符冲突。标准还规定了如何在C++中包含C的头文件,有兴趣的读者可以到网上查阅这些资料。

尽管以上两种#include命令都可以正确地被VC++识别了,但是它们却并不符合C++的标准。标准规定,包含C++提供的标准头文件或系统头文件时应使用尖括号,包含自定义头文件时可使用双引号。 虽然有些文件是系统文件,但如果你工程中包含有相应文件,使用#include "xxx.h" 也不会报错(比如在Keil中使用#include "stdio.h"),但还是建议使用规范的代码。可能复制粘贴习惯了,你都不知道究竟是 #include 还是 #include "xxx.h" 了。

C语言:秀操作 | 函数宏的三种封装方式单片机红外电路设计原理C语言经典算法十例,附源码卡尔曼滤波算法,啥原理?C语言,动态展示经典排序算法NMOS实现双向电平转换wifi神器ESP8266自动下载电路设计

c++ include 路径_头文件中,#include使用引号“”和尖括号lt;gt;有什么区别?相关推荐

  1. include的头文件中include其他头文件时的路径问题

    问题 由于之前项目做得很少,一直没有注意到这个问题,include一直认为就是直接把include的文件复制过来,并没有去深究里面的原理.但今天做项目时发现如果是直接复制过来,那include的文件里 ...

  2. include包含头文件的语句中,双引号和尖括号的区别

    #include <>格式:引用标准库头文件,编译器从标准库目录开始搜索 #incluce ""格式:引用非标准库的头文件,编译器从用户的工作目录开始搜索,如果找不到, ...

  3. 6.set ff=unix;设置Linux中文件中每行后又尖括号的情况

     用vi命令打开要替换尖括号的文件 直接输入:   :set ff=unix 表示设置文件格式是unix格式

  4. Visual C++中 #include stdafx.h 头文件的用法

    今天在做VC++实验时,总是出现莫名其妙的错误.比如说: unexpected end of file whilelooking for precompiled header directive 再比 ...

  5. c++ include 路径_程序员应如何理解include

    相信很多同学在学习C/C++后都有这样的疑问,#include这句话到底是怎么意思?这句话的背后隐含了什么?我们常用的stdio.h存放在了哪里? 这篇文章就来解答这个问题. 谁来处理头文件 有上述疑 ...

  6. linux接口 头文件,第一种:1、添加关键头文件:#include linux/of_gpio.h#include linux/gpio.h...

    第一种: 1.添加关键头文件: #include #include #include #include #include #include 2.在已经存在驱动文件中搜索"DEVICE_ATT ...

  7. 头文件和Include: Why and How

    头文件和Include: Why and How 简介 这篇文件介绍了一个常见的新手问题:如何理解#include, 头文件和源文件的关系. 为什么需要头文件 如果你刚写C++, 你可能会问为什么需要 ...

  8. C++实践小经验——#include 何时放在头文件里,何时放在cpp文件里?

    结合我自己的经验,谈一谈模块化编程时#include应该出现的位置.总结起来大体有二条规则: 一.规则1:只包含必要的头文件 看下面这个模块: ===foo.c==== #include <st ...

  9. 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )

    文章目录 一.在 Visual Studio 2019 中创建 " 控制台应用 " 程序 二.拷贝 xxx.lib.xxx.dll.xxx.h 到源码路径 三.导入 xxx.h 头 ...

最新文章

  1. linux shell tr命令 换行符换成空格
  2. 与孩子一起学编程 python_【和孩子一起学编程】 python笔记--第五天
  3. 【NLP】bert4vec:一个基于预训练的句向量生成工具
  4. Spring源码解析-实例化bean对象
  5. ssm中java实现树状结构_java ssm使用递归写树形结构
  6. ICCV 2021 | 带你了解微软亚洲研究院CV领域前沿进展
  7. 每天一点点之vue框架开发 - vue坑-input 的checked渲染问题
  8. 基于c的xml文件解析(转)
  9. 真正认识 realloc 的工作方式(转载)
  10. monkey配置及简单报告生成(安卓)
  11. 汉诺塔递归算法(Python编程)
  12. 计算机在档案管理中的作用,计算机在档案管理中的运用
  13. Windows10只关闭显卡驱动更新
  14. 缺陷检测相关论文阅读总结(记录自己读过的论文主要内容/Ideas)
  15. Python PAT乙级 1068 万绿丛中一点红 (20分) 成功
  16. html简单的时分秒计时器,时分秒自定义倒计时计时器
  17. Java中的多态,引用类型的转换
  18. IoU(Intersection over Union)
  19. cvxpy报错Encountered unexpected exception importing solver OSQP
  20. THz:通信系统的研究现状与应用展望

热门文章

  1. Python——字符串大小写转化
  2. hbuilderX的upx单位是什么鬼?
  3. 斐波那契算法举例(iterative Fibonacci algorithm)
  4. awk5.0 — awk模式之一
  5. 设计1.0 -- iterator 和const_iterator底层的模拟实现
  6. 一目了然了解JAVA集合体系
  7. js 跨页面的全局变量
  8. 第4次作业类测试代码+043+杨晨宇
  9. 笔画宽度变化(C++和matlab算法)
  10. 学习ExtJS4 常用控件