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;
    }

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




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

  • 相关阅读:
    Altium Designer如何从已有的PCB图中导出封装库
    获得内核函数地址的四种方法
    poj2976 Dropping tests
    poj3045 Cow Acrobats
    CF916C Jamie and Interesting Graph
    poj3104 Drying
    poj2455 Secret Milking Machine
    poj2289 Jamie's Contact Groups
    网络流最小路径覆盖
    CF897C Nephren gives a riddle
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4282877.html
Copyright © 2011-2022 走看看