c++ 头文件里函数定义报错

我在头文件里定义了一些函数,这个头文件已经加了预处理命令防止重复编译
在多个源文件里引用些头文件,结果程序出错,说已经在....obj中已定义

然后我改为在头文件里声明函数,在cpp中定义,这个时候就没有错误 了
为什么预处理命令没有起作用呢?
还有内联函数如果在cpp里定义的话 ,会出错,放在头文件里则不会报错,这又是怎么回事呢?

头文件里只能声明,不能定义函数。
编译器工作过程是,先将每个.C文件独立编译,最后再“链接”在一起。
如果头文件中有函数定义,那么在编译阶段是可以通过的,但是每个C文件对应的目标文件里都会有该函数的实现,最后在链接阶段就会提示说某某某重复定义。

内联函数只能在头文件里定义,因为编译的时候需要将内联函数直接展开,而编译时只包含头文件,如果不在头文件里定义,那怎么能展开呢?追问

谢谢,还请教一个问题,普通函数定义成static 和不定义成static 有什么区别吗?
我搜到static函数的访问区域为文件级的,那什么是文件级的呢?

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答