C语言中的#和##你还傻傻分不清楚吗

简介: 简单介绍两者的用途并以代码的形式举例

1、#
把宏参数变成一个字符串

2、##
连接两个宏参数

3、示例
#include

define STR(s) #s

define CONS(a,b) int(a##e##b)

int main()
{
printf(STR(vck)); // 输出字符串"vck"
printf("STR(123) = %s\r\n", STR(123)); // 输出字符串"123"
printf("%d\n", CONS(2,3)); // 2e3 输出:2000
return 0;
}

当宏参数是另一个宏的时候,需要注意的是凡宏定义里有用’#’或’##’的地方宏参数是不会再展开. 即, 只有当前宏生效, 参数里的宏!不!会!生!效 !!!!

相关文章
|
4月前
|
存储 安全 Java
初学者对C语言的爱恨情仇之神秘的字符串
初学者对C语言的爱恨情仇之神秘的字符串
34 0
|
27天前
|
C语言
C语言之文字游戏
C语言之文字游戏
|
4月前
|
存储 算法 Java
初学者对C语言中指针的爱恨情仇
初学者对C语言中指针的爱恨情仇
49 0
|
安全 编译器 C语言
【C语言】刨根问底 - 深剖const关键字
【C语言】刨根问底 - 深剖const关键字
67 0
【C语言】刨根问底 - 深剖const关键字
|
C语言
一些c语言零碎小知识
一些c语言零碎小知识
74 0
一些c语言零碎小知识
|
存储 C语言 C++
【维生素C语言】第十六章 - 文件操作(下)
在文件操作(上)中,我们讲了文件的打开和关闭和文件的顺序读写,还有对流(stream)进行一个简单的讲解。本章将对文件的随机读写、文本文件和二进制文件、文件读取结束的判定,以及文件缓冲区进行讲解。
56 0
【维生素C语言】第十六章 - 文件操作(下)
|
存储 C语言
【维生素C语言】第十章 - 指针的进阶(上)
指针的主题,我们在初级阶段的 【维生素C语言】第六章 - 指针 章节已经接触过了,我们知道了指针的概念:
88 0
【维生素C语言】第十章 - 指针的进阶(上)
|
C语言
【维生素C语言】第七章 - 结构体
本章将对结构体进行简单的学习,后期在自定义类型讲解章节会进一步学习结构体。由于本章知识点较少,在文章的最后对函数栈帧的创建与销毁进行一个简要的介绍。
79 0
【维生素C语言】第七章 - 结构体
|
存储 编译器 C语言
【维生素C语言】第十六章 - 文件操作(上)(二)
本章为文件操作教学上篇,由浅入深的引入问题,然后逐一介绍知识。将详细讲解文件的打开和关闭、文件的顺序读写并精讲函数部分,初步学习“流”的概念!
44 0
【维生素C语言】第十六章 - 文件操作(上)(二)
|
存储 数据库 C语言
【维生素C语言】第十六章 - 文件操作(上)(一)
本章为文件操作教学上篇,由浅入深的引入问题,然后逐一介绍知识。将详细讲解文件的打开和关闭、文件的顺序读写并精讲函数部分,初步学习“流”的概念!
54 0
【维生素C语言】第十六章 - 文件操作(上)(一)