宏参数

2023-05-16

一 可变参数宏 “…” 和 “VA_ARGS

1.1 直接替代“…”
结果:weight = 1,shipping = 2

#define PR(...) printf(__VA_ARGS__)
    PR("weight = %d,shipping = %d\n",1,2);

1.2 可变参数的宏,可以有多个可变参数,加##用来支持0个可变参数的情况。
结果:
(1)Function:-[ViewController viewDidLoad]a
(2)错误,注意与(1)的区别,就是顺序不一样。
(3)Function:-[ViewController viewDidLoad]c:1

(1)#define myprintf(...)      printf("Function:%s" __VA_ARGS__,__FUNCTION__);

    输入:myprintf("a")

(2)#define myprintf2(...)     printf("Function:%s" ,__FUNCTION__,__VA_ARGS__);
    输入:这种是错误的

(3)#define myprintf3(fmt,...) printf("Function:%s"fmt ,__FUNCTION__,##__VA_ARGS__);
    输入:myprintf3("c:%d",1)

二 “#”用来把参数转换成字符串

结果:2 is 4

#define PSQ(x) printf(""#x" is %d\n",(x)*(x))
    PSQ(2);

三 “##” 把两个连接成当个语言符号

结果:token9 = 10;

#define paster( n ) printf( "token"#n" = %d\n ", token##n )
    int token9=10;
    paster(9);

也会阻止宏展开,只替换一次,从外开始替换。
结果:xA = 12

#define XNAME(n)   x##n
#define A          (2)
    int xA = 12;
    printf("xA = %d", XNAME(A));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

宏参数 的相关文章

  • 设置系统屏幕关闭及系统休眠时间

    include lt Powrprof h gt pragma comment lib 34 PowrProf lib 34 DWORD lockTime 61 0 void SetPowerPolicy SYSTEM POWER POLI
  • 如何编译和运行C++程序

    如何编译和运行C 43 43 程序 C 43 43 和C语言类似 xff0c 也要经过编译和链接后才能运行 我们在C语言课程的时候 xff0c 讲了如何使用 VS VC 6 0 VC 43 43 2010等常见开发工具 xff0c 它们除了
  • 简单理解socket(AF_INET&SOCK_STREAM,SOCK_DGRAM)

    套接字 在任何类型的通信开始之前 xff0c 网络应用程序都必须创建套接字 套接字最初是为同一主机上的应用程序所创建 xff0c 使得主机上运行的一个程序 xff08 又名一个进程 xff09 与另一个运行的程序进行通信 这就是所谓的进程间
  • 为什么编程语言中需要堆和栈

    概述 在我们学习 C C 43 43 和 Java 等编程语言的时候经常要学习一个概念就是堆和栈 xff0c 对于大部分经验丰富的工程师来说 xff0c 堆和栈是再熟悉不过的东西了 xff0c 堆和栈都是存储程序运行时变量的地方 但这个时候
  • GT1050 PointPillar成功运行

    目的 之前在感知这里主要是考传统的算法 xff0c 但是遇到了瓶颈 xff0c 计算效率提不上来 xff0c 所以尝试一下其他的方法 目前看到pointpillar这种方法效果比较好 xff0c 就打算尝试一下 跑通测试一下效果 piont
  • 使用离线数据测试apollo7.0

    https zhuanlan zhihu com p 510712104 cd apollo 视觉测试 xff1a 1 启动dreamview 并选择车辆和地图 scripts bootstrap sh 2 启动transform模块 cy
  • 相机、激光雷达坐标系相互转换

    目录 读入外参和摄像头内参配置文件读入TF读入 激光雷达坐标系转到摄像头坐标系摄像头坐标系转到激光雷达坐标系 读入外参和摄像头内参 配置文件读入 std span class token double colon punctuation s
  • C++ thread的方式

    多线程的实现方式 xff0c 只做记录 xff0c 自己看 目录 第一种 在类中实现多线程第二种 在类外第三种 没有类第四种 pthread 定时触发总结附录 第一种 在类中实现多线程 新建thread对象 xff0c 传入类的成员函数名称
  • zynq 在ubuntu下移植ubuntu操作系统

    米联客的配套的文件是osrc lab 1 配置路径 在setting64 sh中把路径给更改一下 这里就是 改成ubuntu 并运行surce settings64 sh 2 rootfs 执行脚本 cfg rootfs sh 然后make
  • zynq 维修调试记录 客服支持 工作记录

    米联的板子用底板供电 xff0c 用JTAG往里面下程序 的时候也出现了如下问题 xff1a 跟客服进行沟通 xff0c 客服的回答是 xff1a 一般是两种可能 xff0c 一个是开发板坏了 xff0c 进行如下操作 xff0c 操作的程
  • ubuntu 16.04 安装apollo3.0(发布版)

    参考官网文档 xff1a https github com ApolloAuto apollo tree master docs https github com ApolloAuto apollo blob master docs how
  • 关于malloc返回地址无法访问

    正常情况下使用malloc申请内存 xff0c 要么是申请成功返回有效地址 xff0c 要么是内存申请失败 xff08 内存不足 xff09 返回NULL 如果出现返回了地址却无法访问的情况 xff0c 很有可能是前面代码访问内存时出现了越
  • docker里面安装Qt Creator

    sudo apt get install qt5 default qtcreator
  • 软连接ln -s 创建以及删除

    在 usr local 创建软连接 链接到 usr local include test dst文件夹 phe 64 phe usr local sudo ln s usr local include test dst test sourc
  • CAN报文:数据帧详解

    CAN报文 xff1a 数据帧详解 CAN报文CAN帧类型数据帧帧起始 Start Of Frame 仲裁段控制段数据段CRC段ACK段帧结束 End Of Frame CAN报文 CAN使用的是两条差分信号线 xff0c 只能表达一个信号
  • I2C总线和SPI总线

    I2C串行总线一般有两根信号线 xff0c 一根是双向的数据线SDA xff0c 另一根是时钟线SCL I2C协议 2条双向串行线 xff0c 一条数据线SDA xff0c 一条时钟线SCL SDA传输数据是 大端传输 xff08 字节高位
  • APM飞控学习之路:2 四旋翼的工作原理与系统组成

    一叶障目 xff0c 不见泰山 在研究四旋翼飞行器之前 xff0c 有必要从整体介绍其工作原理 主要部件 技术名词等基础知识 不然就像羊入虎口 xff0c 陷入一大堆不同层次的资料 xff0c 难觅出口 接下我就抛砖引玉 xff0c 尽自己
  • APM飞控学习之路:4 源码裁剪与下载

    月盈则亏 xff0c 水满则溢 当博主编译完成 xff0c 以为离成功更近一步准备下载的时候 xff0c 殊不知陷阱也早已准备好 xff0c 等待我的踏入 连上USB线 xff0c 下载 xff0c timeout xff0c timeou
  • 详解STM32CubeIDE 中 HAL库的串口中断接收函数 HAL_UART_Receive_IT

    MX串口配置方法见 xff1a CubeIDE 利用自带HAL库 串口收发 一 代码自动生成以后的项目及代码结构 xff1a main c中 xff0c 调用了串口初始化 串口初始化函数赋值了串口的参数 相当于底层的初始化 xff0c 配置
  • RTK-Real Time kinematic实时动态

    目前 xff0c GNSSj接收机约99 的时间都用作RTK模式进行测量 xff0c 只有1 的时间用作静态测量做控制网等 所以 xff0c 大部分人都习惯把GNSS接收机喊成RTK了 不过除去GNSS接收机 xff0c 你知道RTK是什么

随机推荐

  • USB-PD3.0(Power Delivery)充电协议

    USB PD xff08 Power Delivery xff09 是基于USB Type C的一种电源供电标准 xff0c 最大供电功率可达100瓦 xff08 W xff09 xff1b 随着USB Type C的普及 xff0c 越来
  • Lua ---- LFS库的使用

    lfs attributes filepath aname 获取路径指定属性 lfs chdir path 改变当前工作目录 xff0c 成功返回true xff0c 失败返回nil加上错误信息 lfs currentdir 获取当前工作目
  • USB2.0实际传输速度

    USB2 0规范中传输速度是480 Mbps 即60 MB s 但是很多USB2 0设备在实际工作时的数据传输速度却与此相差甚远 xff0c 比如用PC用U盘拷个东西 xff0c 往往比60MB s慢很多 xff0c 这是为什么呢 xff1
  • Type-C协议-CC检测原理

    Type C协议简介 xff08 CC检测原理 xff09 1 简介 越来越多的手机开始采用Type C作为充电和通信端口 xff0c Type C连接器实物和PIN定义如下图 xff1a Type C连接器中有两个管脚CC1和CC2 xf
  • 基地址和偏移地址

    首先必须明白 cpu和内存的区别 cpu 中央处理器 内存是物理数据存放的地方 cpu不直接存放数据而是通过内存来存放数据 cpu和内存之间通过20条地址总线相连接 xff0c 地址总线就是cpu通过地址找到对应的内存的物理数据的传递工具
  • RZ、NRZ、NRZ1、曼彻斯特编码

    1 RZ Return Zero Code 编码 也称为归零码 xff0c 特性就是在一个周期内 xff0c 用二进制传输数据位 xff0c 在数据位脉冲结束后 xff0c 需要维持一段时间的低电平 RZ编码又分为两种 xff1a 单极性归
  • LTE中RB和RE、REG、CCE的定义

    一 RB RE REG CCE定义 xff1a 1 RB Resource Block xff1a 频率上连续12个子载波 xff0c 时域上一个slot xff0c 称为1个RB xff0c 即1RB 61 12个子载波 RB 61 12
  • UART 波形

    先介绍一些概念 起始位 先发出一个逻辑 0 的信号 xff0c 表示传输数据的开始 校验位 xff1a 数据位加上这一位后 xff0c 使得 1 的位数应为偶数 偶校验 或奇数 奇校验 xff0c 以此来校验数据传送的正确性 就比如传输 A
  • UART中的硬件流控RTS与CTS

    在RS232中本来CTS 与RTS 有明确的意义 xff0c 但自从贺氏 HAYES 推出了聪明猫 SmartModem 后就有点混淆了 xff0c 不过现在这种意义为主流意义的 xff0c 各大芯片制造厂家对UART控制器的流控基本采用H
  • AC-DC电源

    电源是什么 xff1f 电源是将来自能量源 xff08 如供电网 xff09 的电流转换为负载 xff08 如电机或电子设备 xff09 用电所需的电压和电流值的电气设备 电源的目的是以适当的电压和电流为负载供电 因此电流必须以受控的方 式
  • VYSOR-投屏软件

    前言 使用Vysor软件进行投屏 无需root 示 xff1a 以下是本篇文章正文内容 xff0c 下面案例可供参考 一 Vysor是什么 xff1f vysor是一个免root实现电脑控制手机的chrome插件 xff0c 不需要root
  • Camera ZSL

    camera的ZSL是什么 ZSL Zero Shutter Lag 零快门延迟 ubiFocus 高通对照片后期的一种处理技术 xff0c 可以利用多张照片来实现拍照不对焦 xff0c 拍好之后随便选择对焦点的功能 原文链接 xff1a
  • Unity3D中uGUI事件系统简述及使用方法总结

    Unity3D的uGUI系统的将UI可能触发的事件分为12个类型 xff0c 即EventTriggerType枚举的12个值 如下图所示 xff1a 先以PointerClick为例 这个是用于某点点击事件 其他事件都可以根据相同的办法调
  • USB 2.0 A型、B型、Mini和Micro接口 type-c 定义及封装

    USB全 称Universal Serial Bus xff08 通用串行总线 xff09 xff0c 目前USB 2 0接口分为四种类型A型 B型 Mini型还有后来补充的Micro型接口 xff0c 每种接口都分插头和插座两个部分 xf
  • UVC摄像头开发(一)

    近期 xff0c 要做一个usb摄像头的开发 xff0c 然后看了韦东山老师的第三期视频 xff0c 讲UVC协议摄像头开发的教程 做一些记录 xff0c 以免忘记 1 当我们拿到一个摄像头 xff0c 怎么知道它的一些信息呢 xff1f
  • 分析锂电池充放电保护电路的特点及工作原理

    锂在元素周期表上位于第3位 xff0c 因外层电子数为1个 xff0c 容易失去从而形成稳定结构 xff0c 故锂是一种非常活泼的金属 由锂元素制成的锂离子电池 xff0c 具有放电电流大 内阻低 寿命长 无记忆效应等优点 xff0c 现已
  • vscode相关配置

    转载 作者 ifredom 原文链接 xff1a https blog csdn net win7583362 article details 79315055 配置详解 editor是针对vscode的风格设置 例如 tabSize xf
  • odroid x2安装ubuntu系统,HDMI显示,说说折腾事儿。

    安装的是Lubuntu14 04 xff0c odroid官网有下载 xff0c 烧写软件用官网下载的win32disk imager for odroid 不要用通用的win32disk image 可能不行 write烧写完毕之后记得v
  • VC http post 文件到服务器

    首先引入 include 34 afxinet h 34 其次准备好HTTP POST服务器 STDMETHODIMP CPostPDFToA4 t5PostPDFToA4 BSTR strFileName BSTR strFileFull
  • 宏参数

    一 可变参数宏 和 VA ARGS 1 1 直接替代 结果 xff1a weight 61 1 shipping 61 2 span class hljs comment define PR printf VA ARGS span PR s