前言
本次博客来自于第一次学习预处理是的一些笔记吧,大家且看且珍惜
c语言预处理
概念了解一下即可
我们了解一下程序是如何进行翻译和执行
程序的流程分为翻译环境和运行环境
翻译环境将.c文件转化为exe可运行文件
源文件->编译器->目标文件--------|
源文件->编译器->目标文件--------|
源文件->编译器->目标文件--------|
源文件->编译器->目标文件--------|
. |
. |
. |
链接器
|->可执行程序
编译器中有编译操作
而编译分三个 1.预编译 2.编译 3.汇编
明天再打总操作现在直接进行的预编译的讲解
预定义符号
这里介绍4个,预定义符号有很多,还要自主学习
__FILE__ __LINE__ __DATE__ __TIME__//注意有两个'_'
int main()
{
printf("%s\n", __FILE__);
printf("%d\n", __LINE__);
printf("%s\n", __DATE__);
printf("%s\n", __TIME__);
return 0;
}
上面代码是他们的基础使用
举例,我们可以用它写日志
int main()
{
FILE* p = fopen("haha.txt", "w");
if (p == NULL)
return 0;
int arr[10] = { 0 };
for (int i = 0; i < 10; i++)
{
arr[i] = i;
fprintf(p, "%s %d %s %s %d\n", __FILE__, __LINE__, __DATE__, __TIME__, i);
printf("%s %d %s %s %d\n", __FILE__, __LINE__, __DATE__, __TIME__, i);
}
fclose(p);
p = NULL;
return 0;
}
文件可以留在vs里
预处理指令
#define 定义标识符
1.#define定义标识符
该标识符可以是任意类型的数 或者字符串
#define AA 1.2
#define BB "hahha"
#define CC 100
#define DD 5+5
int main()
{
printf("%f %s %d %d", AA,BB,CC,DD);
return 0;
}
2.当然#define还可以定义关键词
#define HH int
int main()
{
HH c = 5;
printf("%d", c);
return 0;
}
3.#define还可以定义代码
#define HAHA {printf("nb\n");printf("jiayou\n");printf("666\n");}
int main()
{
int a=20;
if (a > 10)
{
HAHA
}
return 0;
}
写到这里我们应该明白 #define的一些注意事项
1.#define的使用中是把一个变量替换成另一个变量 有优先级问题
#define AAA 5+5
int main()
{
printf("%d ", 5 * AAA + 5);
return 0;
}
这里你是否会认为答案是55
实际上 5*5+5+5=35 就是由于是直接转换过去
当然了如果加上括号 结果就是50 #define AAA (5+5)
2#define注意不要添加;
比如
#define ROW 10;
#define COL 10;
int main()
{
int arr[ROW][COL] = { 0 };
}
这个程序就是错误的
4.#define还可以定义宏
1再看代码
#define JUEDUI(x) ((x)>0?(x):(-x))
int main()
{
int i = 0;
int arr[10] = { -1,-2,-3,-4,5,6,7,8,9,10};
for (i = 0; i < 10; i++)
{
arr[i] = JUEDUI(arr[i]);
}
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
总结
实际上,预处理还有还有一些条件编译,以及如何生成目标文件的过程
还是么有讲清楚,下次再说吧,这些笔记真是一个一个字纯手打的
呜呜呜,还是祝看到这的兄弟们,天天健康开心