C++ compile multiple cpp and header files via -I. cpp1.cpp cpp2.cpp -o
1.The first header file.
//DynamicArray.h
#include <cassert> #include <stdio.h> #include <stdlib.h> using namespace std; class DynamicArray { private: int _size; int _max; int *_arrayHolder; public: DynamicArray(); ~DynamicArray(); int size(); int &operator[](int i); void add(int n); void printArray(); };
2.The first source file
//DynamicArray.cpp
#include <DynamicArray.h> DynamicArray::DynamicArray() { this->_size=0; this->_max=5; this->_arrayHolder=new int[5]; } DynamicArray::~DynamicArray() { delete[] this->_arrayHolder; } int DynamicArray::size() { return this->_size; } int& DynamicArray:: operator[](int i) { assert(i<this->_size); return this->_arrayHolder[i]; } void DynamicArray:: add(int n) { if(this->_max<this->_size+1) { this->_max*=2; int *tmp=new int[this->_max]; for(size_t i=0;i<this->_size;i++) { tmp[i]=this->_arrayHolder[i]; } delete[] this->_arrayHolder; this->_arrayHolder=tmp; this->_arrayHolder[this->_size]=n*n*n*n; this->_size+=1; } else { this->_arrayHolder[this->_size]=n*n*n*n; this->_size+=1; } } void DynamicArray:: printArray() { for(int i=0;i<_size;i++) { printf("Index=%d,value=%d in printArray()\n",i,_arrayHolder[i]); } }
3.The second header file
//MathHelper.h
#include <iostream> #include <math.h> using namespace std; class MathHelper { public: int getDouble(int x); int getTriple(int x); int getSquare(int x); int getCube(int x); };
4.The second source file
//MathHelper.cpp #include <MathHelper.h> int MathHelper::getDouble(int x) { return x*2; } int MathHelper::getTriple(int x) { return x*3; } int MathHelper::getSquare(int x) { return x*x; } int MathHelper::getCube(int x) { return x*x*x; }
5.The key step is to add header files in main cpp file as below
#include <DynamicArray.h>
#include <MathHelper.h>
6.The main.cpp as below
#include <iostream> #include <uuid/uuid.h> #include <vector> #include <DynamicArray.h> #include <MathHelper.h> using namespace std; void dynamicArr4(); void math5(); int main() { dynamicArr4(); math5(); return 0; } void math5() { MathHelper mh; for(int i=0;i<1000;i++) { cout<<"Index="<<i<<",value="<<mh.getCube(i)<<endl; } printf("In math5() method!\n"); } void dynamicArr4() { DynamicArray dArray; vector<int> vArray; for(size_t i=0;i<=100;i++) { dArray.add(i); } dArray.printArray(); }
6.Caution. Pay more attentio to the -I. which will include the current directory
When you begin to compile the main cpp file via gcc,it will and the '-I.' (i 'me' uppercase) to include the current directory files as below.
g++ -g -std=c++2a -I. DynamicArray.cpp MathHelper.cpp h1.cpp -o h11 -luuid
7.The compiled result as below
8.Run the compiled output
./h11
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2019-12-04 C# copy source directory files with original folder to the destination path
2019-12-04 C# transfer local file to remote server based on File.Copy