记录编译方面的问题(重定义)

之前自己没搞过C语言C++,所以被编译问题困扰了很久,不过在实践中摸索,也渐渐理解了项目中各种文件之间的关联关系。

 

类重定义问题:

一个类的.h文件被多个文件引用会出现这个问题。

在类的.h文件上加一句#pragma once。可保证这个.h文件只被编译一次。

 

下面是另一种重定义错误:

这个错误是因为,将函数的实现写在了.h文件里(一般是.h只有函数声明,.cpp里写对应实现)。(接手的项目之前的人是这么写的......只有main函数是cpp,其他函数都是.h文件)

之后这个.h文件被多个.cpp文件引用,导致重定义错误。这样依赖即使加了#pragma once也是没用的。

解决方法就是.h里只写声明,.cpp文件里写实现。这样.h被别的文件include就只是引用了声明和实现无关。

 

posted on 2017-11-28 15:39  J·Marcus  阅读(285)  评论(0编辑  收藏  举报

导航