zoukankan      html  css  js  c++  java
  • 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
    }

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

  • 相关阅读:
    Js图片利用定时器自动切换(setInterval)
    JS全选,全不选,添加,删除功能的实现
    windows 下安装memcache拓展
    Linux 踢出其他用户
    通过nginx配置php环境变量
    Mac 服务重启
    Mac PHP安装redis扩展
    高并发解决方案
    MySQL 分表
    MySQL 主从-简介
  • 原文地址:https://www.cnblogs.com/1175971310-axbcdxyz/p/14255899.html
Copyright © 2011-2022 走看看