前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >#define 以及##

#define 以及##

作者头像
用户9996207
发布2023-01-13 14:31:29
6260
发布2023-01-13 14:31:29
举报
文章被收录于专栏:学习之旅111学习之旅111

#define定义标示符

#define定义标示符就是将一个名称起一个别名,在程序运行之前使用别名将原来的名字替换掉,从而达到简化代码书写的作用

#define的语法

define name stuff

name是别名,stuff是原本的名称

代码语言:javascript
复制
#define NUM 120
#define STR  "abcdef"
int main()
{
    printf("%d\n", NUM + 10);
    printf("%s", STR);
    return 0;
}
image-20220409213341935
image-20220409213341935

其实#define就是将NUM 和 STR 简单的进行了转换,再进行计算即可

define也可以将复杂的符号进行简单的替换

代码语言:javascript
复制
#define reg register //将register改名为reg
int main()
{
    //register int a = 0;//  定义一个寄存器变量a
    reg int a = 0;
    return 0;
}

注意:#define 后面最好不要加上分号,避免不必要的错误

#define定义宏

宏的声明方式

define name( parament-list ) stuff 其中的parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中。

define只是进行了简单的替换,并不会进行运算

代码语言:javascript
复制
#define ADD(x) x+x
#define MUL(x) x*x
int main()
{
    int ret = ADD(2);
    printf("%d\n", ret1);
      
    int ret2 = MUL(3);
    printf("%d\n", ret2);

    int ret3 = MUL(2 + 3);
    printf("%d\n", ret3);
    return 0;
}

ret1 的结果就是2+2=4

ret2的结果就是3*3=9

ret3的结果是11,为什么不是25?就是因为#define不会进行运算,只是简单的替换,所以是2+3*2+3=11

要是想要得到25就要加上括号,严格规定优先级顺序

代码语言:javascript
复制
#define MUL(x) (x)*(x)
int main()
{
    int ret3 = MUL(2 + 3);
    printf("%d\n", ret3);
    return 0;
}

使用#define宏定义时,如果不注意就会发生错误,所以在宏定义的时候要多加括号,严格规定优先级的顺序

# 和 ##的作用

#是将字符拼接在字符串中

代码语言:javascript
复制
#define PRINT(n,format) printf("the value of "#n" is "#format"",n)
int main()
{
    int a = 10;
    PRINT(a, "%d");

    return 0;
}

##是将两边的符号连接起来,成为一个符号

代码语言:javascript
复制
#define TYPE(class,num) class##num
int main()
{
    int class105 = 100;
    printf("%d", TYPE(class, 105));
}
//打印结果就是100
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • #define定义标示符
    • #define的语法
    • #define定义宏
      • 宏的声明方式
      • # 和 ##的作用
        • #是将字符拼接在字符串中
          • ##是将两边的符号连接起来,成为一个符号
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档