C/C++ 如何写自己的 头文件
Posted ~晨曦静竹~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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++ 如何写自己的 头文件的主要内容,如果未能解决你的问题,请参考以下文章