在编译的时候就会出错: 原因是洇为在多次包含global.h时重复定义了结构体变量pinfo,即使包含了#ifndef也一样报错
在一个A.cpp文件中定义了一些class和一些普通函数在B.cpp文件中对A.cpp进行了include操作。报错:
这是由于编译是以cpp文件为单位的所以会对A.cpp进行编译,而由于B.cpp中include了A.cpp所以在编译B.cpp的时候又再一次對A.cpp进行了一次编译从而导致上述问题。其实解决方法也很简单将A.cpp的以A.h或者A.hpp的方式存储即可。所以按照通用的形式进行书写是可以避免很多坑的。
如果将main函数中对函数a()的调用的屏蔽去掉则链接时就会出现函数c()重复定义的错误。
由以上结果可以知道链接器在链接时是优先查找目标文件中的函数,目标文件中
另外,如果函数a()在另一个目标文件(比如a.o)中并且这个文件与lib.o不在同一目录,
由a.o和lib.o生成静态库liblib.a,这样即使在main函数中调用函数a(),链接也能正常进荇而不会报
函数c()重定义的错误