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

2025-04-04 19:29:25
推荐回答(1个)
回答1:

那是因为没有理解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结束的代码就无效。