C语言条件编译

C语言条件编译

概念:
通常情况下,一个C语言源程序的所有非注释语句都要经过编译产生目标代码。但是有时希望对源程序中的部分代码只有在一定的条件下才进行编译,或希望当满足某个条件下对一部分语句进行编译,而当条件满足时对另一部分语句进行编译。这种可以按不同的编译条件去编译不同的程序部分,因而产生不同的目标代码文件的功能称为条件编译。C语言预处理程序提供了条件编译的功能,这对于程序的移植共和调试时很有用的。
C语言常用的条件编译有一下三种形式:

  • 第一种
#ifdef 标识符
	程序段1
#else
	程序段2
#ednif

应用第一种条件表达式

#include<stdio.h>
#include<stdlib.h>
#define Num 100 //定义无参数的宏
struct Student
{
	int number;
	char *name;
	char *address;
} *ps;

int main()
{
ps=(struct Student*)malloc(sizeof(struct Student));
ps->number=28;
ps->name="Transformer";
ps->address="xia men";
#ifdef Num
	printf("Number=%d\n Name=%s\n Address=%s",ps->number,ps->name,ps->address);
#else
	printf("Name=%s\tNumber=%d\tAddress=%s",ps->name,ps->number,ps->address);
#endif
free(ps);
return 0;
}

因为程序中加入了条件编译预处理命令,因此要根据NUM是否被定义过来决定应该编译那条语句。在此例子中,因为NUM事先被定义过,所以编译器会编译第一个输出语句,当然最后的运行结果也是第一条语句。

他的功能是:如果标识符已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译

  • 第二种
#ifndef 标识符
	程序段1
#else
	程序段2
#endif

他的功能是:如果标识符未被#define定义过则对编译程序段1,否则编译程序段2.与第一种形式正好相反

  • 第三种
#if 常量表达式
	程序段
#else
	程序段2
#endif

应用第一种条件表达式

#include<stdio.h>
#define NUm 10
#define PRINT1 printf("%x\n",i)
#define PRINT2 printf("%o\n",i)
int main()
{
	int i=123;
#if NUM
	PRINT1;
#else
	PRINT2;
#endif
return 0;
}

他的功能是:如果常量表达式的值为真编译程序段1,否则编译程序段2

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值