C语义的预处理 - 宏定义中 # 和 ## 的意义及用法

    xiaoxiao2023-10-12  162

    宏定义基本语法

    C 语言中,所有预定义的宏,都会在预处理阶段进行替换。宏定义的语法为:

    #define 宏名 字符串

    简单宏定义

    下面的示例中,预处理后,所有出现 MAX 的位置都会被替换为 100:

    #include <stdio.h> #define MAX 100 int main() { printf("MAX is: %d\n", MAX); return 0; }

    宏定义中使用变量

    #include <stdio.h> #define CHANGE(x) (x * x) int main() { printf("CHANGE(10) is: %d\n", CHANGE(10)); return 0; }

    宏定义中使用 #

    # 表示字符串化,单纯的使传过来的变量变成字符串。

    #include <stdio.h> #define CHANGE(x) #x int main() { printf(CHANGE(xyz)); return 0; }

    宏定义中使用 ##

    ## 是普通的链接符号,表示单纯的链接前后的字符串。因为是在预处理阶段替换完成的,可以间接的使用变量。

    #include <stdio.h> #define DAY(x) day ## x int main() { int day1 = 11; int day2 = 22; printf("day is:%d\n", DAY(1)); return 0; }
    最新回复(0)