zoukankan      html  css  js  c++  java
  • C语言基础:C语言宏定义(1)

    前言

    前面我们总结了C语言的数据类型, 有基础数据类型, 构造数据类型等等, 这次我们来讲讲C语言的宏定义,.


    开始

    什么是宏定义, 宏定义定义的又是什么东西? 有什么规范, 下面我们来看看例子:

    #include <stdio.h>
    
    int main()
    {
        int a[] = {1, 2, 3, 4};
        
        for (int i = 0; i < 4; i++) {
            printf("a = %d
    ", a[i]);
        }
        
        return 0;
    }

    一般来讲, 我们定义数组并且打印出来都像上面那个例子一样, 先定义数组, 然后再判断数组有多少个元素, 我们才能准确的使用for循环打印出来, 但这有一个问题, 如果我们不知道数组里有多少个元素, 那我们怎么才能打印呢? 宏定义就是为了解决这个问题而诞生的:

    #include <stdio.h>
    
    #define kCount 4
    
    int main()
    {
        int a[kCount] = {1, 2, 3, 4};
        
        for (int i = 0; i < kCount; i++) {
            printf("a = %d
    ", a[i]);
        }
        
        return 0;
    }

    #define是宏定义的标准书写格式, 而kCount是宏定义名, 4是定义的常量;


    那么宏定义的作用域在哪里呢? 让我们来看看一个例子:

    #include <stdio.h>
    
    
    int main()
    {
    #define kCount 4
    
        int a[kCount] = {1, 2, 3, 4};
        
        for (int i = 0; i < kCount; i++) {
            printf("a = %d
    ", a[i]);
        }
    #undef
        return 0;
    }

    宏定义的作用域, 从#define这句代码开始一直到#undef为止, 这个就是宏定义的作用域, 如果没有遇到#undef这句代码, 那么宏定义就是从#define开始一直到文件的结束.

    PS: #undef这句是代表结束宏定义.



    注意点:

    宏定义一般起名方式有两种, 一种是以k开头, 一种就是整个宏名都是大写, 而定义好之后的宏名可以直接调用, 但是并不能写特定的类型中, 比如下面这个例子:

    #include <stdio.h>
    
    #define kCount 4
    
    int main()
    {
        char name[] = "kCount";
        
        printf("name = %s
    ", name);
        
        return 0;
    }

    这样子是不正确的, 因为一旦使用在(" ") 符号中, 无论你是什么东西, 都当作字符串来处理, 这点我们需要注意.




    好了, 这次我们就讲到这里, 下次我们继续~~~

  • 相关阅读:
    docker node中uid与gid的授权问题
    windows下docker无法进行端口映射的问题
    IOS/Safari下document对象的scrollHeight值比Chrome更大
    Vue/Egg大型项目开发(二)数据库设计
    .babelrc和babel.config.js的相同配置不能合并
    es6 class中责任链模式与AOP结合
    JS设计模式(10)职责链模式(重要)
    Vue/Egg大型项目开发(一)搭建项目
    你不知道的JS(3)来聊聊this
    CentOS7为php7.2安装php-redis扩展(redis环境搭建二)
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4282877.html
Copyright © 2011-2022 走看看