前言
前面我们总结了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; }
这样子是不正确的, 因为一旦使用在(" ") 符号中, 无论你是什么东西, 都当作字符串来处理, 这点我们需要注意.
好了, 这次我们就讲到这里, 下次我们继续~~~