【C++】define宏定义

define宏定义

define是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本;

cpp 复制代码
define <宏名> (<参数表>) <宏体>

操作符

  • :可将参数转化为字符串;

cpp 复制代码
#include <iostream>
using namespace std;

# define print(xx , a , b) cout << #xx << a + b << endl;

int main()
{
    print(加法:, 5 , 6);
}

编译输出:

cpp 复制代码
加法:11
  • ##:连接两个参数成为一个整体
cpp 复制代码
#include <iostream>
using namespace std;

# define print(xx , a , b) cout << #xx << a##b << endl;

int main()
{
    print(连接:, 5 , 6);
}

编译输出:

cpp 复制代码
连接:56
  • \:具有续行的作用,下一行也是属于该宏定义;

  • 条件定义

cpp 复制代码
#ifndef RADIXUN_LOG_H__ //如果为定义
#define RADIXUN_LOG_H__
#endif
cpp 复制代码
#ifdef xx  //如果定义
#define xxxx
#else
#define xxxxx
#endif
  • 取消宏定义
cpp 复制代码
#undef xx
  • 可变参数宏...和__VA_ARGS__

...:为参数列表中最后一项

cpp 复制代码
# define print(xx , ... , xx) cout << #xx << __VA_ARGS__ << endl;//报错
cpp 复制代码
#include <iostream>
using namespace std;

# define print(xx , ...) cout << #xx << __VA_ARGS__ << endl;

int main()
{
    print(XXXX:, 555);
}

编译输出:

cpp 复制代码
XXXX:555

相关推荐
Тиё Сиротака10 小时前
红包分配算法的严格数学理论与完整实现
算法
故事不长丨10 小时前
C#定时器与延时操作的使用
开发语言·c#·.net·线程·定时器·winform
hefaxiang10 小时前
C语言常见概念(下)
c语言·开发语言
“αβ”11 小时前
MySQL表的操作
linux·网络·数据库·c++·网络协议·mysql·https
potato_may11 小时前
链式二叉树 —— 用指针构建的树形世界
c语言·数据结构·算法·链表·二叉树
欧阳天风11 小时前
js实现鼠标横向滚动
开发语言·前端·javascript
十五年专注C++开发11 小时前
Asio2: 一个基于 Boost.Asio 封装的高性能网络编程库
网络·c++·boost·asio·asio2
gcfer11 小时前
CS144 中的C++知识积累
c++·右值引用·智能指针·optional容器
java修仙传11 小时前
每日一题,力扣560. 和为 K 的子数组
算法·leetcode
yue00811 小时前
C# Directory的用法介绍
开发语言·c#