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;
}

 

 

 

输出:

 

 

  这样一个简单的多文件框架就实现了,点击这里下载源代码。

posted @ 2015-07-11 20:38  Robothy  阅读(4708)  评论(0编辑  收藏  举报