常用预处理指令

  • Post author:
  • Post category:其他


预处理指令是以

#

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

指令 用途
# 空指令无任何效果
#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



版权声明:本文为qq_43630810原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。