C/C++头文件的编写
在C语言的学习过程中,我们一般把所有的代码写在一个文件中。随着自身水平的提高,我们发现代码越写越长,代码行数越来越多,把一个工程的所有代码写在一个文件中让人看起开非常吃力。于是我们开始想把代码中的函数归类,同一类放在同一个文件中当中,那么如何实现将一个工程中的代码放到不同文件中呢?这就需要写头文件了。下面的简单列子将让你学会如何写头文件。你也可以点击这里下载源代码自己研究。
假设我们需要定义一些与栈有关的函数,主程序需要调用这些函数。
首先,我们在同一文件夹中新建3个文件(要包含不同的自定义头文件需要加上路径,为了使用方便就在同一个文件夹下定义),名称分别为:
main.cpp 包含主程序
stack.cpp 定义与栈有关的函数
stack.h 对stack.cpp里面的函数、结构体变量等进行声明
然后在stack.h中添加如下代码:
#ifndef HEADER_H_INCLUDED #define HEADER_H_INCLUDED
#include "stdio.h"
#include "stack.cpp" ///表名函数原型在,stack.cpp中,VC6.0好像不用加这句 #endif // HEADER_H_INCLUDED
在stack.cpp中包含stack.h:
#include "stack.h"
同样在main.cpp中也包含stack.h,并添加主函数:
#include "stack.h" int main() { return 0; }
这几步做完之后,基本框架也就完成了,下面我们开始写我们的库函数,例如我们要定义:
void stack_push(pSTACK &S);
pSTACK stack_pop(pSTACK &S);
bool stack_empty(pSTACK &S);
3个函数,以及一个结构体,那么这函数的原型和结构体应该写在stack.cpp中,函数声明和结构体声明写在stack.h中。
stack.cpp:
#include "stack.h" typedef struct Stack { struct Stack *next; unsigned int stack_size; }; void stack_push(pSTACK &S) { /**此处省略若干代码**/ printf("这个函数来自stack.cpp\t"); printf("进栈\n"); } pSTACK stack_pop(pSTACK &S) { pSTACK s=NULL; /**此处省略若干代码**/ printf("这个函数来自stack.cpp\t"); printf("出栈\n"); return s; } bool stack_empty(pSTACK &S) { /**此处省略若干代码**/ return true; }
stack.h:
#ifndef HEADER_H_INCLUDED #define HEADER_H_INCLUDED #include "stdio.h" /***结构体声明***/ typedef struct Stack STACK,*pSTACK; /***函数声明***/ void stack_push(pSTACK &S); pSTACK stack_pop(pSTACK &S); bool stack_empty(pSTACK &S); #include "stack.cpp" ///表名函数原型在,stack.cpp中,VC6.0好像不用加这句 #endif // HEADER_H_INCLUDED
在main函数中调用自定义函数。
main.cpp:
#include "stack.h" int main() { pSTACK S=NULL; stack_push(S); stack_pop(S); return 0; }
输出:
这样一个简单的多文件框架就实现了,点击这里下载源代码。