浅谈#ifndef,#define,#endif的做用和用法

文件中的#ifndef.#define, #endif 很关键,是为了不多重包含,好比若是两个C文件同时包含同一头文件,那么就会出现问题,因此使用这种方法能够有效避免这种状况。ios

 

通常用法:函数

以add.h为例测试

 
  1. #ifndef _ADD_H_spa

  2. #define _ADD_H_命令行

  3.  
  4. //在这里包含add.h的类定义及变量和函数的声明code

  5. 好比函数声明:int add(int a ,int b); //分号是必须加上的编译器

  6.  
  7. #endif //_ADD_H_io

编写add.cpp文件编译

 
  1. #include"add.h"stream

  2. int add(int a , int b)

  3. {

  4. return a+b;

  5. }

主函数main.cpp文件

 
  1. #include <iostream>

  2. #include "add.h"

  3. using namespace std;

  4.  
  5. int main()

  6. {

  7. int a ;

  8. a = add(2,3);

  9. cout<<a<<endl;

  10. return 0;

  11. }

1.程序中_ADD_H_为预处理器变量,书写格式通常是头文件名大写,先后加下划线,“.”用下划线代替。好比stdio.h表示为_STDIO_H_.

2.预处理器变量通常有两种状态:已定义或未定义。

  #ifndef 指示检测指定的预处理器变量是否未定义,若是未定义,那么跟在后面的全部指示被处理,直到出现#endif;若是已定义,那么#ifndef测试为假,该指示和#endif指示间的代码都被忽略。

  #define 指示接受一个名字并定义该名字为预处理器变量。

3.在调用该头文件时通常用#include "add.h".

 

4.头文件的使用:

  若是头文件名包含在<>中,那么认为该头文件是标准头文件。编译器将会在预约义的位置集查找该头文件,这些预约义的位置能够经过设置查找路径环境变量或者经过命令行选项来修改。

  若是头文件名包含在"  "中,那么认为它是非系统文件,非系统文件的查找一般开始于源文件所在的路径。

相关文章
相关标签/搜索