C语言预处理的那些子事儿

文中没有讲解到的知识点在我其他文章中可以找到,在这里不重复赘述。

无参宏定义

1、理解宏定义

例题:输入一个数字,计算以它为半径的圆的面积

在这里插入图片描述
定义了一个没有参数的函数void fun(void)

用函数

在这里插入图片描述
以上使用的既有宏定义【# define PI 3.1415926】(第2行)又有函数的声明(顶部第4行)【void fun(void)】、定义(底部第26行)【void fun(void)】和调用 (中间第19行)【fun();】

用定义

在这里插入图片描述

2、define与typedef

在这里插入图片描述

3、不用循环和递归,打印0~999

在这里插入图片描述
这个是打印0~9999
在这里插入图片描述

带参宏定义

1、理解定义

在这里插入图片描述
定义了一个有参数的函数MAX(a,b),后面是这个函数的定义表达式,其中a,b是形式参数

2、大无语事件

计算5以内的数值的平方值
在这里插入图片描述
以上采用的是函数的声明调用和定义,正常计算,可得出正确的值,其中y是函数的变量参数,第10行中SQ(i++)里的i++是y增值的表达式

以下采用的是定义的方式
在这里插入图片描述
第二张截图里第10行,i++作为了SQ的实际参数,带入SQ中去算即为((i++)*(i++))

在第一次循环中,i 初始值为1。先赋值,第一个y=1。后自加,第二个y=2。所以输出结果里的值2是这么得来的:1x2

再次循环进行 i ++计算,即 i =3,依旧小于5,所以先赋值,第一个y=3。后自加,第二个y=4。第二个值12=3x4这样算出来的

第二次循环结束时 i =4,第三次进行 i ++计算,即 i =5,已经不小于5,所以结束运算。

3、一些例子

(1)要注意输出形式

将三段话分别输出以及连成一句话输出

在这里插入图片描述
其中 scrcat 的原型为extern char *strcat(char *dest, const char *src); 在C中,函数原型存在 <string.h>头文件中。在C++中,则存在于头文件中。用于将两个char类型连接。例如:
char a[18]=“hello”;
char b[20]=“word”;
strcat(a,b);
printf("%s",a);
输出 d 为 helloword (中间无空格)
a和b所指内存区域不可以重叠且a必须有足够的空间来容纳b的字符串。

(2)开关一样的东西

str[0]=1,看输出在这里插入图片描述
str[0]=0,看输出
在这里插入图片描述

条件编译

有三种形式(百度百科).

1、if格式

#if 表达式
语句序列①
#else
语句序列②
#endif
功能:当表达式的值为真时,编译语句序列①,否则编译语句序列②。其中,#else和语句序列②可有可无。
在这里插入图片描述
当# ROUHD 1时执行if下的语句,结果为圆的面积

在这里插入图片描述
当# ROUHD 0 时执行else下的语句,结果为正方形的面积

2、ifdef格式

#ifdef 标识符
语句序列①
#else
语句序列②
#endif
功能:当标识符已被定义时(用#define定义),编译语句序列①,否则编译语句序列②。其中#else和语句序列②可有可无。

3、ifndef格式

#ifndef 标识符
语句序列①
#else
语句序列②
#endif
功能:该格式功能与ifdef相反。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值