0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言中#和##符号有什么样的作用

Wildesbeast 来源:今日头条 作者:算法集市 2020-02-24 10:56 次阅读

1、#的预处理作用

预处理过程实质上是处理“#”,包括:

将#include包含的头文件直接拷贝到.c当中;

将#define定义的宏进行替换;

将#if #else #endif定义的无用代码过滤掉;

将代码中没用的注释部分删除等。

从而生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。

上面中符号“#”表示这是一条预处理命令,凡是以“#”开头的一般均为预处理命令,比如:

#include:是包含头文件命令,声明在这个地方插入别的文件中的代码;

#define 标识符 被标识符代表的字符串:其中,“define”为宏定义命令,“标识符”为所定义的宏名;

#if #else #endif:是条件编译命令,加上符号“#”的作用是:#if是编译器在编译代码时完成的,if是在程序在运行时完成的,两者的执行时期不同。

2、#的字符串化作用

符号 # 也称为字符串化运算符(stringify operator 或 stringizing operator),它会把宏调用时的实参转换为字符串。见下面的代码示例。

3、##的连接符作用

符号 ## 则是连接符号,由两个井号组成,其功能是在带参数的宏定义中将两个子串联接起来,从而形成一个新的子串。

代码示例如下:

#和##的作用

在上面这个例子中,show(6) 中的 #n 被当成了一个字符串“#6”,与前面的“result_”和后面的“: %d ”连到一起,组成“result_6: %d ”;而 result_##n,则替换为 result_6。

因此,show(6)也就变成:

printf("result_6: %d ", result_6)

程序运行结果则如上图所示:

result_6: 666

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7589

    浏览量

    135767
  • 代码
    +关注

    关注

    30

    文章

    4714

    浏览量

    68194
  • 编译器
    +关注

    关注

    1

    文章

    1614

    浏览量

    49006
收藏 人收藏

    评论

    相关推荐

    C语言中void指针的基本认识及典型应用

    C语言中,*类型就是指针类型,比如 int *p,double *q,虽然是不一的指针,但是大小却一sizeof(p) == sizeof(q),因为它们都是同一种类型*类型的。
    发表于 02-01 09:26 1041次阅读

    单片机的C语言中位操作用

    单片机的C语言中位操作用
    发表于 08-17 15:04

    &符号C语言中有两种含义

    &符号C语言中有两种含义:①取地址;②按位与;问题就来了。本人近期一段程序其中有一条:if(addr&3 != 0)adh_block[addr>>2]2]2]
    发表于 05-25 14:30

    跟着狄泰唐老师学C语言进阶教程的笔记之有符号与无符号

    ——> MIN_VALUEB. MIN_VALUE-1 ——> MAX_VALUE4. signed和unsignedl C语言中变量默认为符号的类型l unsigned 关键字声
    发表于 05-16 21:43

    请问C语言中volatile有的作用是什么?

    C语言中volatile什么用作用是什么?看到一个数组,别人这样写:volatile unsigned short adc_dma_buf[40];u32 ADCValue_ActC
    发表于 10-23 22:16

    C语言中定义int a,a是什么类型?

    C语言中定义int a[10][10],a是什么类型? 我的理解是a是指向二维整型数组的指针 ,具体这个怎么用?一般都处理什么样的数据呢?​
    发表于 05-25 07:10

    c语言中整数的取值范围是多少

    c语言中整数的取值范围,文章目录1、整数的取值范围2、版权声明整数是我们生活中常用的数据类型,也是编程中常用的一种数据,C语言使用int关键字来定义整数变量(int是 integer
    发表于 07-20 07:50

    c语言中标志位什么作用

    c语言中标志位什么作用
    发表于 10-14 08:05

    C语言中双下划线的作用是什么?

    C语言中双下划线的作用是什么?
    发表于 10-19 06:18

    C语言中关键字static的作用是什么

    C语言中关键字static的作用是什么?用预处理指令#define 声明一个函数,输入天数得到多少秒?
    发表于 12-24 06:53

    C语言中的指针与数组分别有哪些作用

    C语言中的指针与数组分别有哪些作用呢?
    发表于 02-25 07:20

    C语言中的指针是什么?如何规避野指针

    C语言中的指针是什么?哪几种类型?指针作用?如何规避野指针?
    发表于 02-25 06:47

    C语言中链表的作用是什么?

    C语言中指针用的很少,链表、文件操作几乎没用过,所以也不能理解到底什么作用。各位经常在做程序时会用到这些吗。
    发表于 11-06 06:23

    单片机C语言C语言为什么差异?

    许多小伙伴在学完C语言后想入门单片机,但学着学着发现明明都是C语言,为什么单片机C语言和我当初学
    发表于 09-01 16:39 3727次阅读

    scanf在C语言中作用

    scanf在C语言中作用  scanf是C语言中的输入函数,用于从标准输入设备(如键盘)读取数据,并将其存储到变量中。它是
    的头像 发表于 11-23 14:13 1233次阅读