常用预处理指令

文章目录

预处理指令是以
#号为代码开头。下面是部分常用的预处理指令:

指令用途
#空指令无任何效果
#include包含一个源代码文件
#define定义宏
#undef取消已定义的宏
#if如果给定条件为真,则编译下面代码
#ifdef如果宏已经定义,则编译下面代码
#ifndef如果宏没有定义,则编译下面代码
#elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
#endif结束一个#if……#else条件编译块
#error停止编译并显示错误信息

一、条件编译

条件编译指令将决定那些代码被编译,而那些不被编译的。可以根据表达式的值或者某个特定的宏是否被定义来确定编译条件。

1.#if指令

#if指令检测关键后的常量表达式。如果为真,则就编译后面的代码,直到出现#else、#elif或者#endif为止;否则就不进行编译。

2.#endif

#endif终值#if预处理指令。

#define DEBUG 0
int main()
{ 
	#if DEBUG
		代码块1
    #endif
    	代码块2
}

由于程序定义DEBUG宏代表0,所以#if条件为假,不编译后面的代码直到#endif,所以程序直接执行代码块2

3.#ifdef和#ifndef

#define DEBUG

int main()
{ 
	#ifdef DEBUG
		代码块1
    #endif
    
    #ifndef DEBUG
    	代码块2
    #endif
}

#if defined等价于#ifdef; #if !defined等价于#ifndef

4.#else指令

#else指令用于某个#if指令之后,当前面的#if指令的条件不为真时,就编译#else后面的代码。#endif指令将中指上面的条件块。

#define DEBUG

int main()
{ 
    #ifdef DEBUG
         代码块1
    #else
         代码块2
    #endif
         代码块3
}

5.#elif指令

#elif预处理指令综合了#else#if指令的作用。

#define TWO

int main()
{ 
    #ifdef ONE
          代码块1
    #elif defined TWO
          代码块2
    #else
          代码块3
    #endif
}

执行代码块3

二、其他一些标准指令

1.#pragme

#pragma指令没有正式的定义。编译器可以自定义其用途。典型的用法是禁止或允许某些烦人的警告信息。

#pragma region 功能
	代码块
#pragma endregion
    原文作者:当初°
    原文地址: https://blog.csdn.net/qq_43630810/article/details/108786500
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞