正如我在标题中所说,我想知道将.cpp文件分别包含在它们的.h中是否是错误
我正在Windows上使用cygwin进行编译。 g ++编译器已使用apt-cyg install g++
安装在cygwin中。
然后我将cygwin路径添加到env中,现在可以从Windows cmd访问g ++命令。
这是重现该问题的基本示例。
main.cpp
#include <iostream>
#include "tezt.h"
int main(int argc, char const *argv[])
{
tezt();
return 0;
}
tezt.h
#ifndef TEZT_H
#define TEZT_H
void tezt();
#endif
tezt.cpp
#include <iostream>
#include "tezt.h"
void tezt()
{
std::cout<<"tezt"<<std::endl;
}
如果我仅使用g++ main.cpp
进行编译,则会出错。
因此,为了正确编译,我应该输入g++ main.cpp tezt.cpp
或定义库。
当使用存储在不同文件夹中的多个.cpp文件进行管理时,这可能是一项艰巨的任务。
所以我正在提议这种方法:
如果我修改tezt.h的内容,例如跟随,则编译成功!这可能是一个很好的“解决方法”,或者不建议这样做?这是一个巨大的愚蠢吗?
#ifndef TEZT_H
#define TEZT_H
#include "tezt.cpp"
void tezt();
#endif
感谢您的关注。
答案 0 :(得分:2)
通常在头文件中有一个实现是一个坏主意。
如果您在同一项目的不同文件中包含tezt.h
文件,则可能会出现multiple definitions for the same symbol
的编译错误。
答案 1 :(得分:-1)
包含* .cpp的作品。
但是真正的解决方案是使用工具make。
创建一个定义依赖项的makefile,然后调用make,然后适当地调用编译器。