关于include问题

[复制链接]
 楼主| 醉心369 发表于 2015-3-9 11:34 | 显示全部楼层 |阅读模式
某项目代码中存在a.h,a.c,b.h,b.c四个文件,其中
(1)a.h包含以下代码:
     #ifndef A_H      //line1
     #define A_H      //line2

    #endif         //end of a.h
  请解释上述三行预编译命令起什么作用?
(2)a.c包含以下代码:
    #include “b.h”    //line1
    #include “a.h”    //line2

请问上述代码有什么不足,可能导致什么问题?
ballack_linux 发表于 2015-3-9 13:26 | 显示全部楼层
楼主,这是C的基本语法,建议先把C打扎实了再搞单片机,绝对是有利无弊!!
第一个问题, 那三句是为了防止重复包含的。
第二个问题, 不知道你b.h的内容是什么 , 所以没法判断!!
chenyu988 发表于 2015-3-9 13:31 | 显示全部楼层
买本c语言书好好看看吧,有益无弊
ningling_21 发表于 2015-3-9 15:43 | 显示全部楼层
防止文件被重复包含
 楼主| 醉心369 发表于 2015-3-10 11:39 | 显示全部楼层
我的疑问是第二问,大虾们重点说一下该问题。
ballack_linux 发表于 2015-3-10 13:24 | 显示全部楼层
醉心369 发表于 2015-3-10 11:39
我的疑问是第二问,大虾们重点说一下该问题。

B.H文件内容给出来看看

评论

这是我遇到的一道面试题  发表于 2015-3-10 17:27
dirtwillfly 发表于 2015-3-10 17:20 | 显示全部楼层
21ic的默认字体太坑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
LeCreateStudio 发表于 2015-3-11 10:08 | 显示全部楼层
第一个问题:1L已经回复
第二个问题:若B.H与A.H 没有相应的宏冲突(及其它预编译冲突),b.h在上面 在下面是一样的
 楼主| 醉心369 发表于 2015-3-11 14:09 | 显示全部楼层
LeCreateStudio 发表于 2015-3-11 10:08
第一个问题:1L已经回复
第二个问题:若B.H与A.H 没有相应的宏冲突(及其它预编译冲突),b.h在上面 在下面 ...

第二个问题不太明白你的意思
joyme 发表于 2015-3-11 16:23 | 显示全部楼层
比如A.h里有类似
#ifdef   xxxx
#endif
而xxxx是在B.h里定义的,则B.h应该放在A.h前
 楼主| 醉心369 发表于 2015-3-11 17:26 | 显示全部楼层
joyme 发表于 2015-3-11 16:23
比如A.h里有类似
#ifdef   xxxx
#endif

你这样说,我认为是没有问题的。
但不知道出题人的意图是什么。
LeCreateStudio 发表于 2015-3-11 17:42 | 显示全部楼层
醉心369 发表于 2015-3-11 14:09
第二个问题不太明白你的意思

如:
   a.h 有#define __ABCDEFG__

   b.h 里 有 #if  __ABCDEFG__  的条件编译,不就为FALSE
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

283

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部