#ifndef #endif 是头文件的表示吗?

来源:百度知道 编辑:UC知道 时间:2024/06/22 00:55:31
说一下头文件的编写与应用
#ifndef _Stack_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

struct Node;
typedef struct StackRecord *Stack;

Stack CreatStack ( int );
void MakeEmpty ( Stack S);
int IsEmpty ( Stack S );
int IsFull ( Stack S );
void Push (int x, Stack S);
int PopAndTop (Stack S);

#endif //Stack_H

这部分真么意思

这个是C语言或C++语言条件编译的表示方法。并不一定用于头文件。
其形式为
#ifndef MACRO_NAME
codes;
#endif

其含义为,当MACRO_NAME这个宏没有被定义的时候,codes部分的代码才会被编译,否则codes部分将被忽略。
为了避免头文件被重复引用,在头文件中一般会加入类似于
#ifndef XXXX
#define XXXX
codes
#endif
这样的代码。其中XXXX这个宏名由头文件名衍生而来。如a.h,XXXX可以定义为_A_H_。
当头文件被第一次引用时,XXXX未定义,codes部分被编译,同时定义宏XXXX。当同一源文件第二次引用该头文件时,XXXX已经被定义了,codes部分不会被二次编译,从而避免重复引用。

条件定义
#ifndef 翻译过来是:if not define
即这句话紧接的宏名假如没有被定义的话;那么执行下面所写的内容,一直到#endif结束

如果没有定义_STACK_H就执行下面的代码,反之则不执行

#ifndef标识符
程序段1
#else
程序段2
#endif

它的功能是,如果标识符没有被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#else可以没有,即可以写为:
#ifndef标识符
程序段
#endif

不是头文件,是选择编译

#include “头文件”

我主要是在头文件里声明函数,定义宏

其它的我就不知道了~