c语言中 #ifdef ...... 和#endif 配套使用的方法 ?
使用方法:
比如头文件名为keyboard.h。通用的使用方法如下:
#ifndef _KEYBOARD_H
#define _KEYBOARD_H
……
#endif
通过这种方法,当第一次使用这个头文件的c文件,编译时,查看是否定义_KEYBOARD_H
第一次肯定没有,所以它就定义了头文件里面的相关宏以及变量。
第二个使用这个头文件的C文件,编译时,一看_KEYBOARD_H已经存在,说明需要使用的东西使用存在,不需要定义了,直接使用就可以了。
扩展资料:
#ifdef语句1
//程序2
#endif
作用:我们可以用它区隔一些与特定头文件、程序库和其他文件版本有关的代码。
代码举例:新建define.cpp文件
#include<iostream>
using namespace std;
int main(int argc,char*argv[])
{
#ifdef DEBUG
cout<<"Beginning execution of main()"<<endl;
#endif
return 0;
}
运行结果为:
1
Press any key to continue
改写代码如下:
#include<iostream>
using namespace std;
#define DEBUG
int main(int argc,char*argv[])
{
#ifdef DEBUG
cout<<"Beginning execution of main()"<<endl;
#endif
return 0;
}
运行结果为:
Beginning execution of main()
Press any key to continue
更一般的情况是,#define语句是包含在一个特定的头文件中。
比如,新建头文件head.h,在文件中加入代码:
#define DEBUG
#ifdef DEBUG
#endif
而在define.cpp源文件中,代码修改如下:
#include<iostream>
#include"head.h"
using namespace std;
int main(int argc,char*argv[])
{
#ifdef DEBUG
cout<<"Beginning execution of main()"<<endl;
#endif
return 0;
}
运行结果如下:
Beginning execution of main()
Press any key to continue
结论:
通过使用#ifdef指示符,我们可以区隔一些与特定头文件、程序库和其他文件版本有关的代码。
参考资料:
在C语言中,我们通常会在头文件里面声明外面使用的宏定义、函数声明以及全局变量定义之类的,当我们需要使用这个东西的时候,只需要通过include "xxxx.h"包含相应的头文件即可。
但是如果连个xx.c文件同时包含了同一个头文件,会出现什么情况呢?
如果没有不使用#ifdef #endif ,则会出现宏、变量、重复定义,导致编译通不过。
所以我们需要通过 #ifdef #endif 来避免这个问题。
二、如何使用
比如头文件名为 keyboard.h 。那么通用的使用方法如下:
#ifndef _KEYBOARD_H
#define _KEYBOARD_H
............
#endif
通过这种方法,当第一次使用这个头文件的c文件,编译时,查看是否定义 _KEYBOARD_H
第一次肯定没有,所以它就定义了头文件里面的相关宏以及变量。
第二个使用这个头文件的C文件,编译时,一看 _KEYBOARD_H已经存在,说明我需要使用的东西使用存在,不需要定义了,直接使用就可以了 ,这样 问题就解决了。
完全手打,正好有空 ,解释一下,希望有用
#ifndef _XX_H_
#define _XX_H_
#endif
2.用于注释掉一段代码
#ifdef _XX_H_
#endif
参考资料: http://zhidao.baidu.com/question/299574124.html
#ifndef XXXX_H
.....
#endif
2011-07-29
#ifndef _XX_H_
#define _XX_H_
#endif
2.用于注释掉一段代码
#ifdef _XX_H_
#endif