C/C++ 如何写自己的 头文件
2021/11/2 11:09:41
本文主要是介绍C/C++ 如何写自己的 头文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
C/C++ 如何使用自定义的头文件 .h
博主以一个任意的代码示例举例:
如下,是一个初步写成未经测试,代替 atoi函数的简单代码:
#include <stdio.h> #include "Atoi.h" int Atoi(char *str) { if (*str == '\0') return 0; int res = 0; // Initialize result int sign = 1; // Initialize sign as positive int i = 0; // Initialize index of first digit if (str[0] == '-') { sign = -1; i++; // Also update index of first digit } if (str[0]=='+') i++; for (; str[i] != '\0'; ++i) { if ( str[i] < '0' || str[i] > '9') // If string contain character it will terminate { return 0; } res = res*10 + str[i] - '0'; } return sign*res; } int add(char *firt,char *secend){ int result; result = Atoi(firt)+Atoi(secend); return result; } int main(int argc, char **argv) { if(argc<3) { printf("Your enter is error,Please run the program again\n"); return 1; } if(argc>4) { printf("Out of range,Please run the program again\n"); return 1; } printf("\n%d\n", add(argv[1],argv[2])); return 0; }
我们可以 将函数声明连带函数题写入到一个.h文件中,也可以仅在.h头文件中写函数声明,将函数主体放在一个或多个.c文件中。
明白这一点后,就开始动手操作了,这里例子博主是分成了一个.h和.c文件。
.h文件的内容为:
#ifndef _ATOI_H_ #define _ATOI_H_ /* 这里的“_ATOI_H_“仅仅是.h头文件的命名, 你也可以写改写成你想要的名称,不过习惯以头文件名称的大写形式去写。 */ int Atoi(char *str); int add(char *firt,char *secend); /*此处,是头文件中函数头声明*/ #endif
.c文件的内容如下:
int Atoi(char *str) { if (*str == '\0') return 0; int res = 0; // Initialize result int sign = 1; // Initialize sign as positive int i = 0; // Initialize index of first digit if (str[0] == '-') { sign = -1; i++; // Also update index of first digit } if (str[0]=='+') i++; for (; str[i] != '\0'; ++i) { if ( str[i] < '0' || str[i] > '9') // If string contain character it will terminate { return 0; } res = res*10 + str[i] - '0'; } return sign*res; } int add(char *firt,char *secend){ int result; result = Atoi(firt)+Atoi(secend); return result; }
主函数仅写main函数和写好的头文件的声明:
#include <stdio.h> #include "Atoi.h" int main(int argc, char **argv) { if(argc<3) { printf("Your enter is error,Please run the program again\n"); return 1; } if(argc>4) { printf("Out of range,Please run the program again\n"); return 1; } printf("\n%d\n", add(argv[1],argv[2])); return 0; }
然后先预编译,再链接编译生成可执行文件,最后运行:
gcc -c Atoi.c atoi-own.c gcc -o Atoi.exe -lm atoi-own.o Atoi.o 运行: C:\root\文档\代码\C-C++\实习练习\自主编写实现atoi函数的测试> ./Atoi.exe +21 -3 18
附: gcc -c 指令会对 demo.c 文件执行预处理、编译以及汇编这 3 步操作; 为了编译这个 atoi-own.c,必须使用-l选项,以链接数学库:gcc ... -lm atoi-own.o Atoi.o 数学库的文件名是 libm.a。前缀lib和后缀.a是标准的,m是基本名称, GCC 会在-l选项后紧跟着的基本名称的基础上自动添加这些前缀、 后缀,本例中,基本名称为 m。
在支持动态链接的系统上,GCC 自动使用在 Darwin 上的共享链接库 libm.so 或 libm.dylib。
这篇关于C/C++ 如何写自己的 头文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11国产医疗级心电ECG采集处理模块
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南