头文件声明
本人菜鸟,对编译不在理解
现在遇到个问题, 我现在有 A B C三个文件 A为主文件(main函数入口) B为一个类
另外有些自己定义的宏定义声明在C文件中
要在A中使用B 并且在A B 中都有使用到C中的宏定义
引用方式是 在A 中
#include "C"
#include "B"
这样引用的,但是报错在B中无法找到C中定义的宏定义, 而在B中再引用又会重复定义,只有在C中加入防重复定义 就解决了
但我不解的是,为什么会造成这样。如果报重复定义,也就是说在编译B的时候已经找到了C中的定义,但在B中如果不引用C,却又说找不到定义。
这到底是怎么回事。 要如何解决
再说个例子, 我在A中引用了 string 在B中也要用,现在B中却说找不到string
我在A中引用B之前已经先引用了string的头文件 为什么会出现这种情况 各位大神,求解啊。
[解决办法]
一个类里面定义了,另一个类要引用吧。我表示也遇到过
http://bbs.csdn.net/topics/390624327?page=1#post-395906766
[解决办法]
1、.h头文件的作用只出现在预编译阶段,预编译后.h文件就失去了价值,也就是说一个.cpp文件为一个编译单元,一个.cpp文件最终生成一个.o文件
2、.h头文件应该包含些什么?
a. 包含声明、条件预编译指令以及类的定义(类的定义一定要有条件预编译指令,否则多个文件包含会出现重定义错误)
b. 包含需要的的头文件,无关的头文件都不需要包含,cpp使用的头文件都放入cpp文件中,或者单独建立一个总体的头文件包含所有需要使用的头文件
c. 包含常量(包括const常量声明,定义放在源文件中)和宏定义
至于“比如用到模版,要用到变量来实例化数组的时候,,所有实现也基本在.h中完成。”
http://bbs.csdn.net/topics/270077671
希望能改变你的一些观点
[解决办法]