硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3697|回复: 2
收起左侧

[RL-RTX] 使用MDK时包含头文件中" "和<>的区别以及选项No Auto Includes

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2015-11-5 09:55:27 | 显示全部楼层 |阅读模式
举例:

#include  <stdarg.h>
#include  <stdio.h>
#include  <stdlib.h>
#include  <math.h>


#include "bsp_uart_fifo.h"
#include "bsp_led.h"
#include "bsp_timer.h"
#include "bsp_key.h"
<>优先在系统目录下找,对于MDK来说就是优先在MDK的安装目录里面查找,如果找不到就去用户所创建的工程里面找。
""  优先在当前目录下找,对于MDK来说就是优先在用户所创建的工程里面找,如果找不到就去MDK的安装目录里面查找.
------------------------
实际应用中推荐的规范写法是:
用户自己写的.h文件,我们就用“”进行保护,而调用系统库文件的时候就用<>进行保护。
------------------------
如果大家在使用中不注意这个问题的话,有时候很多麻烦的问题就来了,根本原因就是MDK的安装目录里面
也有芯片厂商库文件和其它的一些源码文件(比如RTX操作系统)。可以想象,比如你采用下面的定义方式
#include <STM32F10x.h>
那么MDK就会优先从安装目录里面去查找,如果你升级了固件库,但是MDK安装目录里面的是低版本的固件库,
那么问题就来,你此时使用的固件库头文件是低版本的,而源码文件是高版本的。
------------------------------------------------
但是大家在使用的时候觉得注意这个很麻烦,最好的解决办法就是把MDK中No Auto Includes选项选上
1.png

选上了这个选项以后,就不会从MDK安装目录里面搜索头文件了,除了系统头文件,比如stdio.h,  string.h等
1.png

===============================
为了验证用户创建的MDK工程独立性,可以NO Auto includes选项选上进行验证。当然也可以通过这种方式来保证
工程的独立性。防止烦人的路径问题。
   在做RTX的源码方式移植的时候这个选项就很有用了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
 楼主| 发表于 2015-11-5 09:59:35 | 显示全部楼层

Re:使用MDK时包含头文件中

对于这个,曾经有在论坛发过两个帖子,今天就是专门写个帖子再说说:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=15056
http://www.armbbs.cn/forum.php?mod=viewthread&tid=15057
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2015-11-5 11:32:36 | 显示全部楼层
受教了  没有注意过这个选项的意义
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-11 15:05 , Processed in 0.169937 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表