C/C++预处理指令#define,#ifdef,#ifndef,#endif…
本文主要记录了C/C++预处理指令,常见的预处理指令如下:
#空指令,无任何效果
#include包含一个源代码文件
#define定义宏
#undef取消已定义的宏
#if如果给定条件为真,则编译下面代码
#ifdef如果宏已经定义,则编译下面代码
#ifndef如果宏没有定义,则编译下面代码
#elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
#endif结束一个#if……#else条件编译块
#error停止编译并显示错误信息
1:#define 预处理
#define 预处理指令用于创建符号常量。该符号常量通常称为宏,c++ 大部分时候是用const 来定义常量。c语言自身有一些不足 就使用#define
#define PI 3.14159 (不是语句 不要加分号)
2:您可以使用 #define 来定义一个带有参数的宏,如下所示:
#define MIN(a,b) (a<b ? a : b)
3:条件编译
这个调节编译 我们看系统文件的时候 会经常看到,就是怕被重复定义
#ifdef DEBUG
cerr <<"Variable x = " << x << endl;
#endif
// 如果 DEBUG 已经被定义了 就执行下面的语句,
不过我们看到更多的是使用#ifndef
#ifndef __gpio_H //
#define __gpio_H // 如果__gpio_H没有被定义 我们就定义__gpio_H 就是为了防止重复定义。
不过我们在看 freeRtos 或者Linux系统程序的时候 是不是经常看到**#if #endif** ??
使用这个指令我在修剪系统的时候,很容易就可以添加或者删除某个我们不需要的模块,是系统只剩下我们所需要的功能模块,不至于导致过大的系统。
#if task_en //task_en 被定义为0的时候 不执行下面的语句, 1的时候执行
。
。
#endif