宏定义

define 常量 值

定义一个公共的常量,编译器预处理过程中,将定义的常量替换到所有引用的代码中

#include 


#define PI 3.14


int main()
{
    float a = 0;
    printf("请输入一个数\n");

    scanf("%f",&a);

    printf("半径为 %f的圆的面积大概是%10.2f\n", a, a*PI*a);
    return 0;
}

宏定义中也可以定义函数,它的作用就是将传入的数字,替换成表达式中的样子,所以要注意括号。这样做的好处是提高内存效率

#include 


#define SQUARE(x,y) ((x)*(y))


int main()
{
    float a = 0;
    float b = 0;

    printf("下面计算长方形面积\n请输入边长a\n");

    scanf("%f",&a);

    printf("请输入边长b\n");

    scanf("%f",&b);

    printf("长方形面积为%10.2f\n", SQUARE(a,b));
    return 0;
}

#和##

  • #和##是两个预处理运算符

  • 在带参数的宏定义中,#运算符后面应该跟一个参数,预处理器会把这个从参数转换为一个字符串。

  1. 在实参的传入中,如果有多个空格,会被替换成一个,如果有""字符串,会被添加转义符\
#include 


#define STR(x) # x

int main()
{
    printf("%s\n", STR(大家好));

    return 0;
}
  1. ## 运算符被称为几号连接运算符,比如我们可以使用##运算符连接连个参数
#include 


#define TOGETHER(x,y) x ## y

int main()
{
    printf("%d\n", TOGETHER(2, 50);

    return 0;
}

宏定义中使用可变参数

#define SHOWLIST(...) printf(# __VA_AGRS__)

你可能感兴趣的:(宏定义)