常用预处理指令

本文详细介绍了C语言中的预处理指令,包括条件编译指令如#if、#ifdef、#ifndef及#else和#elif等,并解释了它们如何帮助开发者控制代码的编译过程。此外,还涵盖了其他常用预处理指令如#include、#define等的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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

指令用途
#空指令无任何效果
#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值