打印

关于include问题

[复制链接]
814|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
某项目代码中存在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 | 只看该作者
防止文件被重复包含

使用特权

评论回复
5
醉心369|  楼主 | 2015-3-10 11:39 | 只看该作者
我的疑问是第二问,大虾们重点说一下该问题。

使用特权

评论回复
6
ballack_linux| | 2015-3-10 13:24 | 只看该作者
醉心369 发表于 2015-3-10 11:39
我的疑问是第二问,大虾们重点说一下该问题。

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

使用特权

评论回复
评论
醉心369 2015-3-10 17:27 回复TA
这是我遇到的一道面试题 
7
dirtwillfly| | 2015-3-10 17:20 | 只看该作者
21ic的默认字体太坑

使用特权

评论回复
8
LeCreateStudio| | 2015-3-11 10:08 | 只看该作者
第一个问题:1L已经回复
第二个问题:若B.H与A.H 没有相应的宏冲突(及其它预编译冲突),b.h在上面 在下面是一样的

使用特权

评论回复
9
醉心369|  楼主 | 2015-3-11 14:09 | 只看该作者
LeCreateStudio 发表于 2015-3-11 10:08
第一个问题:1L已经回复
第二个问题:若B.H与A.H 没有相应的宏冲突(及其它预编译冲突),b.h在上面 在下面 ...

第二个问题不太明白你的意思

使用特权

评论回复
10
joyme| | 2015-3-11 16:23 | 只看该作者
比如A.h里有类似
#ifdef   xxxx
#endif
而xxxx是在B.h里定义的,则B.h应该放在A.h前

使用特权

评论回复
11
醉心369|  楼主 | 2015-3-11 17:26 | 只看该作者
joyme 发表于 2015-3-11 16:23
比如A.h里有类似
#ifdef   xxxx
#endif

你这样说,我认为是没有问题的。
但不知道出题人的意图是什么。

使用特权

评论回复
12
LeCreateStudio| | 2015-3-11 17:42 | 只看该作者
醉心369 发表于 2015-3-11 14:09
第二个问题不太明白你的意思

如:
   a.h 有#define __ABCDEFG__

   b.h 里 有 #if  __ABCDEFG__  的条件编译,不就为FALSE

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

283

帖子

2

粉丝