永发信息网

c++中关于单独编译的问题

答案:1  悬赏:50  手机版
解决时间 2021-03-18 09:53
  • 提问者网友:留有余香
  • 2021-03-17 22:25
我在c++书上看到讲单独编译的问题,上面把一个程序分成3小段,放在不同的cpp文件中
第一段在第一行加上#define COORDIN_H_
第二段第一行加上include "coordin.h"
第三段第一行加上include "coordin.h"
这样编译之后再运行,又是一个完整的程序,这是什么意思?不理解
最佳答案
  • 五星知识达人网友:玩家
  • 2021-03-17 22:31
那是因为没有理解include 的意思
include 其实意思很简单
比如有两个文件 A.h B.h
在A里面 ,加入内容 include “B.h”

那么系统会再编译A.h的时候,将B.h的内容 完整的拷贝到 A.h中 include B的地方。也就是简单的文本完整替换。

关于下面这个宏
#ifndef COORDIN_H_
#define COORDIN_H_

....

#endif

是为了防止被重复include 时采用的过滤。
比如A include了 C
B include了 C
A 又include了 B
那么在编译A的时候,就include了C两次。那么C里面定义的一些类型就会出现重复定义两次的情况,这是语法错误。所以为了保证只定义一次,那么定义C的时候,用下面的宏

#ifndef COORDIN_H_
#define COORDIN_H_

....

#endif

这样保证 ... 部分的内容,只有第一次出现才有效,第二次出现因为ifndef 判断不满足,所以中间一直到endif结束的代码就无效。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯