如何重用一个已经有main方法的文件中的类?例:我想在我自己的程序main.cpp:
中使用另一个开发人员在foo.cpp中编写的结构符foo。//-- foo.cpp --
struct foo {
int bar;
};
int main() {
return 0;
}
//-- end foo.cpp --
//-- main.cpp --
#include "foo.cpp"
int main() {
foo f;
f.bar = 1;
return f.bar;
}
//-- end main.cpp
main.cpp不能使用g++ 4.4.4编译,给出如下错误:
main.cpp: In function "int main()":
main.cpp:2: error: redefinition of "int main()"
foo.cpp:4: error: "int main()" previously defined here
我不能从foo.cpp中提取main方法,因为我不控制该代码。在我正在处理的实际代码库中,结构foo更复杂,所以我不能将其复制到main.cpp中,因为它将不可维护。
使用预处理器定义将main
扩展为宏,例如,在编译foo.cpp
时扩展为not_main
;例如,
g++ -Dmain=not_main foo.cpp
非编码解决方案:去和维护问题代码的人谈谈。主动为他们重构!
将结构体foo放入header
foo.h
#ifndef _STRUCT_FOO
#define _STRUCT_FOO
struct foo {
int bar;
};
#endif
包含在你需要的地方