使用main()重用文件中的类

Reuse of class in file with main()

本文关键字:文件 main 使用      更新时间:2023-10-16

如何重用一个已经有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

包含在你需要的地方

相关文章: