自学内容网 自学内容网

【C语言】预处理详解

他们想要逃避工作的压迫,却又被功绩社会深植的价值观绑架。

预定义符号 

1. C语言设置了⼀些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的。

1 __FILE__ //进⾏编译的源⽂件
2 __LINE__ //⽂件当前的⾏号
3 __DATE__ //⽂件被编译的⽇期
4 __TIME__ //⽂件被编译的时间
5 __STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义
#include <stdio.h>
int main()
{
printf("%s\n", __FILE__);
printf("%d\n", __LINE__);
printf("%s\n", __DATE__);
printf("%s\n", __TIME__);
return 0;
}

#define定义常量

1. #define定义常量时,会在预处理阶段进行替换

2. #define定义常量时,建议不要在末尾加;

#define MAX 1000
#define reg register //为 register这个关键字,创建⼀个简短的名字
#define MAX 1000;

if(condition)
    max = MAX;//报错,两个分号代表有两行代码,需要加上大括号。
else
    max = 0;

#define定义宏

1. #define机制包括了⼀个规定,允许把参数替换到文本中,这种实现通常称为定义宏

2. 宏的功能与函数有些相似,可以代替一些简单的函数功能。

3. 宏的参数不进行任何计算,直接带入进行替换。

4. 写宏时,不要吝啬括号,建议给宏一个整体的括号

5. 所以用于对数值表达式进行求值的宏定义都应该用这种方式加上括号,避免在使用宏时由于参数中的操作符或邻近操作符之间不可预料的相互作用。

#define name(parament-list) stuff
//parament-list为一个参数列表
#define DOUBLE(x) x*x
#include <stdio.h>
int main()
{
int n = 5;
int result = DOUBLE(n);
printf("%d", result);//25
return 0;
}
#define DOUBLE(x) x*x
#include <stdio.h>
int main()
{
int n = 5;
int result = DOUBLE(n+1);
printf("%d", result);//11
return 0;
}

#define DOUBLE(x) (x)*(x)
#include <stdio.h>
int main()
{
int n = 5;
int result = DOUBLE(n+1);
printf("%d", result);//36
return 0;
}


原文地址:https://blog.csdn.net/hsy1603914691/article/details/144360562

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!