C++宏 #与##的区别

简介: C++宏 #与##的区别

#是直接转字符串输出,例如:

#define FOOBAR1(s) #s
cout << FOOBAR1(INT_MAX) << endl;
// prints : INT_MAX
1
2
3

##是将内容作为代码语句编译,例如:

#define FOOBAR2(a, b) int(##a+##b)
cout << FOOBAR2(1, 2);
// prints : 3
1
2
3

最后完整测试代码如下:

#include <iostream>
using namespace std;

#define FOOBAR1(s) #s
#define FOOBAR2(a, b) int(##a+##b)

int main()
{
    cout << FOOBAR1(INT_MAX) << endl;
    // prints : INT_MAX
    cout << FOOBAR2(1, 2);
    // prints : 3
}
相关文章
|
21天前
|
存储 C语言 C++
1. 认识C++和C的区别
1. 认识C++和C的区别
48 0
|
21天前
|
编译器 Linux C++
【C++ 跨平台开发 】掌握 C++ 跨平台关键宏的使用
【C++ 跨平台开发 】掌握 C++ 跨平台关键宏的使用
56 3
|
21天前
|
存储 缓存 安全
【cmake 生成配置文件】CMake与现代C++:配置文件宏的深度探索与应用
【cmake 生成配置文件】CMake与现代C++:配置文件宏的深度探索与应用
71 0
|
21天前
|
存储 算法 C++
【C/C++ Vector容量调整】理解C++ Vector:Reserve与Resize的区别与应用
【C/C++ Vector容量调整】理解C++ Vector:Reserve与Resize的区别与应用
92 1
|
21天前
|
C++ 容器
c++ STL 之 vector 的 capacity 和 size 属性区别
c++ STL 之 vector 的 capacity 和 size 属性区别
35 0
|
21天前
|
存储 Java 编译器
java和c++的主要区别、各自的优缺点分析、java跨平台的原理的深度解析
java和c++的主要区别、各自的优缺点分析、java跨平台的原理的深度解析
162 0
|
21天前
|
编译器 C++ Python
【C/C++ 泡沫精选面试题02】深拷贝和浅拷贝之间的区别?
【C/C++ 泡沫精选面试题02】深拷贝和浅拷贝之间的区别?
46 1
|
21天前
|
人工智能 机器人 编译器
【C/C++】g++ 与 gcc的区别
【C/C++】g++ 与 gcc的区别
|
14天前
|
存储 编译器 程序员
C++中的宏定义和字符串字面值的区别
C++中的宏定义和字符串字面值的区别
|
21天前
|
编译器 C语言 C++
【C++专栏】C++入门 | 类和对象 | 类的引入、struct&class的区别、类的定义
【C++专栏】C++入门 | 类和对象 | 类的引入、struct&class的区别、类的定义
15 0