如何重用已包含main方法的文件中的类?例如。我想在我自己的程序main.cpp中使用另一个开发人员在foo.cpp中编写的struct 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方法,因为我无法控制该代码。在我正在处理的实际代码库中,struct foo更复杂,因此我无法将其复制到main.cpp中,因为它不可维护。
答案 0 :(得分:1)
将struct foo放在标题
中foo.h
#ifndef _STRUCT_FOO
#define _STRUCT_FOO
struct foo {
int bar;
};
#endif
包括您需要的地方。
答案 1 :(得分:1)
在编译main
时,使用预处理器定义将not_main
转换为扩展为foo.cpp
的宏。即,
g++ -Dmain=not_main foo.cpp
答案 2 :(得分:1)
非编码解决方案:与维护相关代码的人员交谈。提议为他们重构它!