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\n", 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\n", 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\n", 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\n", name);
    
    return 0;
}

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




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

posted @ 2015-01-10 16:26  背着吉他去流浪  阅读(423)  评论(0编辑  收藏  举报