解决multiple definition ofxxx

tech2022-12-17  131

解决multiple definition ofxxx

遇到了一次multiple definition of xxx错误,最后发现问题是包含xxx函数的头文件yyy.h中完整地实现了该xxx函数。 而头文件起到的是预编译的作用。之前我的程序编译的时候之所以没有报错是因为只有zzz.h中包含了yyy.h,只有一个文件调用该头文件。 直到另一个文件调用该函数,又预编译了一次,导致了multiple definition的问题。 解决办法是只在头文件中声明函数,而在c文件中实现该函数。 分离完成之后,在makefile中要记得加上 xxxx.cc。

fstream

没有ofstream这个头文件。 只有包含 这个头文件。 在写C++的文件输入输出的时候,不能写#include<ofstream>。

endl来自哪个库

endl来自于iostream.hh库,所以#include<iostream> 在编译C++程序的时候出现了一个bug

util-debug.hh:73:14: error: ‘cout’ is not a member of ‘std’ std::cout << BOLDYELLOW << x << RESET << std::endl; \

这个bug看起来奇怪的地方在于明明这里写了std::endl,但是确报错说endl不是std的member。 后面发现,这个问题在于我是用宏写的:

#define FuncBegin() \ { \ std::cout << "\n" \ << BOLDCYAN << "Function " << BOLDRED << __FUNCTION__ << BOLDYELLOW << " begin" << RESET << std::endl; \ }

这个宏是用到别的cc文件中的,而宏是起到替换作用的,endl所在的头文件是iostream.hh,如果别的文件要用该宏,就要先声明iostream 头文件。

最新回复(0)