c++关于自己写的头文件编译问题

本文介绍了如何编译包含多个源文件的C++项目。两种方法包括直接通过终端将所有源文件一起编译,或者使用CMakeLists.txt配置文件进行编译。正确做法是确保所有源文件都参与编译并链接成最终的可执行文件。

前言

我本以为1.cpp想要引用2.cpp离得函数,就需要写个2.h,include一下就好啦,(确实是这样)
但是编译出了点问题,就是我直接编译器1.cpp,结果运行时说我没有定义2.cpp中的函数,这其实是个250错误,笨想都知道我都没有编译2.cpp,也没有把它们俩连起来就加一个include是没用的。
最重要的就是2个文件要一起编译。

方法一

直接在终端上将两个文件编译成一个可执行文件。

g++ -o test 1.cpp 2.cpp

也可以生成连两个可执行文件,再给链接起来

g++ -c 1.cpp
g++ -c 2.cpp
g++ 1.o 2.o  -o test

然后在终端运行

./text

即可。

方法二

在cmakelists里
只要将连个文件同时加入add_executable

add_executable (test 1.cpp 2.cpp)

直接编译即可。

C++中使用自己编头文件,可按以下步骤操作: ### 编头文件 首先要编头文件,为防止头文件被重复包含,可使用 `#pragma once` 或者 `#ifndef`、`#define`、`#endif` 这种预处理器指令。同时,若要兼容C++编译器,可使用 `extern "C"` 按C标准编译。示例如下: ```cpp // 防止头文件重复包含 #pragma once // 兼容C++编译器,如果是C++编译器,则按c标准编译 #ifdef __cplusplus extern "C" { #endif int add(int a, int b); int max(int a, int b); #ifdef __cplusplus } #endif ``` 这个头文件中声明了 `add` 和 `max` 两个函数 [^2]。 ### 实现头文件中声明的函数 需创建一个源文件(.cpp 文件)来实现头文件中声明的函数。假设头文件名为 `myheader.h`,对应的源文件 `myheader.cpp` 内容如下: ```cpp #include "myheader.h" int add(int a, int b) { return a + b; } int max(int a, int b) { return (a > b) ? a : b; } ``` ### 在主程序中包含并使用头文件 在主程序(.cpp 文件)里包含自己编头文件,使用尖括号 `<>` 一般用于包含系统提供的头文件,而使用双引号 `""` 用于包含自己编头文件。示例如下: ```cpp #include <iostream> #include "myheader.h" int main() { int result1 = add(3, 5); int result2 = max(3, 5); std::cout << "Add result: " << result1 << std::endl; std::cout << "Max result: " << result2 << std::endl; return 0; } ``` ### 编译和链接 将所有源文件一起编译和链接,例如使用 g++ 编译器,命令如下: ```sh g++ myheader.cpp main.cpp -o myprogram ``` 其中 `myheader.cpp` 是实现头文件中函数的源文件,`main.cpp` 是主程序文件,`myprogram` 是生成的可执行文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值