keil中#include后的尖括号与引号的区别

   九层妖塔 起于垒土
在这里插入图片描述



一、经典解释

 先引入关于#include后的尖括号与引号的区别的经典解释:

双引号系统先在源程序所在的目录内查找指定的包含文件( 在当前目录中查找),如果找不到,再按照系统指定的标准方式到有关目录中去寻找。
尖括号系统将直接按照系统指定的标准方式到有关目录中去寻找(在标准系统目录中查找文件)。

 区分两个概念:当前目录标准系统目录
 据《C Primer Plus》说 对于标准系统目录一般IDE(集成开发环境)可以通过菜单选项进行设置,来指定用尖括号时的查找路径。 对于
当前目录,不同的IDE 也有着不同的解释。

二、在Keil中

1、Keil的标准系统目录

 Keil中路径包含的设置:在(Project->)Options for Target''->C51 可用于设置当前项目的C51编译器控制命令。在Include Paths一栏用于设定包含文件的目录路径。
 Keil在这里的Include Paths包含文件的目录路径即是上文所说的标准系统目录

2、Keil的当前目录

 对于Keil单片机工程来说当前目录是指,Project文件夹的根目录。

3、Keil的工程结构分析

 下图是Keil C51单片机工程比较常见的工程形式,即只有一个C文件,没有其他用户自己写的头文件和C文件。
 具体的结构分析ing
图1.单C文件工程
在这里插入图片描述

三、测试

 用已经已经建好的工程,使用SEG.h头文件和C文件进行测试。(只需关注SEG.h头文件和C文件的变化即可)。
主C文件:
在这里插入图片描述
SEG.hC文件
在这里插入图片描述
SEG.h头文件
在这里插入图片描述

test_1:

 按照烂大街的说法:双引号用来包含自己写的文件。SEG.h的头文件是自己写的应该用双引号括起来。但是此时SEG.h的头文件是单独放在一个另一个文件夹里的。并不在下图中。
(因为测试工程采用的是模块化编程,将每个模块分别用一个C文件和头文件来写,主C文件也单独放在了一个文件夹中)

图2.Project的文件夹在这里插入图片描述

此时,报错显示无法打开SEG.h头文件
在这里插入图片描述

test_2:

SEG.h头文件剪贴到Project的文件夹中,如下图所示,
在这里插入图片描述
编译结果无错误无警告,下载后运行正常。

test_1:test_2:对比可知,keil工程的当前目录指的是Project文件夹的根目录

实测,在不添加Include Paths路径时,将双引号换为尖括号也没问题。🙃

test_3:

在模块化编程中,为了便于管理各种文件,习惯性地按照硬件外设分为不同地文件夹。比如把数码管的相关程(SEG.cSEG.h)单独放在一个名字为的SEG的文件夹里。此时keil不会自动找到SEG.h这个头文件了。需要手动通过Include Paths进行路径添加。

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#法外狂徒张三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值