注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
无物之象的个人空间 https://home.eeworld.com.cn/space-uid-438531.html [收藏] [复制] [分享] [RSS]
日志

关于Keil预处理中#define语句和#include语句的顺序问题

已有 1135 次阅读2013-7-7 18:38 |个人分类:ARM学习|

 

关于Keil预处理中#define语句和#include语句的顺序问题

  今天在学习TIstellaris luminary LM3S9B96的固件移植过程中,发现了一个问题,叙述如下:

 

  由于固件中的pin_map.h文件中包含了LM3S所有芯片型号的引脚映射,所以当为某一特定的芯片进行引脚映射时,要通过#define PART_LM3Sxxxx 语句选择特定的宏定义段。Pin_map.h中关于LM3S9B96的宏定义段如下图所示:

但编译却并没有通过,而是出现了如下图所示的提示:

可见,图片二中的宏定义段并没有加载到.C的文件中,但当把#define PART_LM3S9B96语句调整到所有#include 语句之前时,如下图所示:

再次进行编译链接,则成功了

综上所述,自然而然地产生如下的疑问:Keil在进行预处理时,是把#define语句和#include语句分类地分开进行编译的吗?即在一个文件中当#include语句为第一条语句时,则编译器先把此文件中所有的#include语句处理完,才转而处理#define语句。不知小弟分析的对不对,还请熟悉预处理过程的大神给予指点!!!

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章