c语言学习教程1之预定义代码

c语言教程1之预定义代码

大家好,我是爱学编程的小圆子。
上一篇我觉得稀里扒拉的,根本没讲到重点,所以我又来详细讲一次啦。

前言

一些新手看到一些大佬的代码,里面可能第一句就是#include<....>,很多新手看不懂是什么,可能还有一些#define #ifdef #if #endif #else ....等等像这种带#符号的代码这些代码在c标准里面都叫预定义代码。
那什么是预定义代码呢?
预定义代码就是在预编译阶段编译的代码,至于编译过程限于篇幅我就不赘述了
首先我们来看一个例子
-----我是分界线-----
#define A = 10
int a = A + A;
-----我是分界线-----
编译器会看成
-----我是分界线-----
int a = 10 + 10;
-----我是分界线-----
#define被略掉了
那有的时候用预编译代码是很好的,有的时候他可以省略可执行文件所占用的内存
就比如
-----我是分界线-----
#ifdef MAKE
printf("MAKE is define.");
#else
printf("MAKE isn't define.");
#endif
-----我是分界线-----
如果定义了MAKE符号那编译器就会编译第一个printf,如果没有定义MAKE符号就会编译第二个printf。
重点!:#define是定义符号 #ifdef是if is define也就是判断有没有定义这个符号#ifndef是#ifdef的反义代码 #elif 和 else if(...)同义但是#elif就是编译时判断else if()是运行时判断#else参考上面

学习

#define AA 1
#define BB 2
int main()
{
int a = AA + BB;
}
按照上面的原理,编译器看到的就是
int main()
{
int a = 1 + 2;
}

来个更深奥点的:

//default.h
#ifndef A
#defif B
#define b
#else
#define bb
#endif //#defif B
#define bbb
#else
#define aaaa
#endif //#ifndef A

//default.c
int main()
{
#define A
#include"default.h"
}

编译的时候就会:
第一步:
int main()
{
#define A
#ifndef A
#defif B
#define b
#else
#define bb
#endif
#define bbb
#else
#define aaaa
#endif
}

第二步:
int main()
{
#define aaaa
}
那我再弄一个:
int main()
{
#define B
#include"default.h"
}

第一步:
int main()
{
#define B
#ifndef A
#defif B
#define b
#else
#define bb
#endif
#define aaa
#else
#define aaaa
#endif
}

第二步:
int main()
{
#define b
#define aaa
}

有什么疑惑可以在评论区跟我说,我会尽快回答

原文地址:https://www.cnblogs.com/1175971310-axbcdxyz/p/14255899.html