使用main()重用文件中的类
Reuse of class in file with main()
如何重用一个已经有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
包含在你需要的地方
相关文章:
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- C++生成文件错误"implicit entry/start for main executable"
- C++/生成文件错误:未定义对"main"的引用
- 在命名空间中声明变量,在 main 中定义它,使其对所有其他文件可见
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 访问除main.cpp之外的.cpp文件中的QMLEngine/rootObject属性
- 运行单独的 cpp 文件,每个文件都有 main()
- 如何使用 c++ 从另一个 cpp 文件中的 main.cpp 调用实例化类
- 程序'main.exe'运行失败:指定的可执行文件不是此操作系统平台的有效应用程序
- 无法引用.cpp中的函数,以及 main 中的 .h 文件。C++
- main.cpp从 .h 文件调用公共虚拟方法
- 实用程序函数不会在 .h 文件中初始化并在 main 中定义.cpp
- 在 main.cpp 以外的文件中包含标头时出现链接器错误
- bash:./main:无法执行二进制文件:Exec格式错误
- main.cpp:1:10:致命错误:opencv2/highgui.hp:没有这样的文件或目录
- 如何将包含多个.cpp源文件的文件夹导入Eclipse项目中,每个源文件都有一个main()定义
- 如何将array.h,array.cpp和main.cpp文件组合在一起
- GC/C++ 从编译中省略了 main,在单独的文件中提供 main
- c++常量放在哪里?在一个分离/共享的头文件(main.h)中
- 编译器仍然构建并运行第一个创建的文件(main.cpp),不运行当前文件