#、##、__VA_ARGS__的使用

news/2024/2/27 20:53:05

使用打印信息的接口时,经常见到__VA_ARGS__和##__VA_ARGS__这两个字符串,花时间学习下这部分的知识,发现还有#和##这两个比较有意思的字符串,记下他们的用法:

 #: 用来把参数转换成字符串;

例:

#include <iostream>#define LOG(x) do { printf("%s=%d\n",#x,x); }while(0)int main()
{int score = 96;LOG(score);LOG(6);getchar();return 0;
}

输出:

##:用于将带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串;但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元;

例:

#include <iostream>#define LOG(x) log##x()void logA(){printf("log func A \n");
}void logB(){printf("log func B\n");
}int main()
{LOG(A);getchar();return 0;
}

输出:

__VA_ARGS__:用于在宏替换部分中,表示可变参数列表;

例:

#include <iostream>#define LOG(...)  printf(__VA_ARGS__);int main()
{LOG("score is %d\n",96);getchar();return 0;
}

输出:

##__VA_ARGS__和__VA_ARGS_作用类似;

很多博客说

##__VA_ARGS__ 宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错

我没有测试出来这种情况,不知什么情形两者有差异,知晓的伙伴可以告知下,不胜感激。

博友反馈用GCC编译器可以测出差别。在此表示感谢!!


http://www.ppmy.cn/news/165110.html

相关文章

VA、RVA、FOA

PE 中涉及的地址有四类&#xff0c;它们分别是&#xff1a; 虚拟内存地址&#xff08;VA&#xff09;相对虚拟内存地址&#xff08;RVA&#xff09;文件偏移地址&#xff08;FOA&#xff09;特殊地址 要想了解这些概念&#xff0c;需要先简单地了解一下 32 位环境下 Windows …

va_list、va_start和va_end的用法

在项目的代码中看到函数不定参数的使用&#xff0c;现在总结一下va_list、va_start和va_end三个宏的用法。 c语言提供了函数的不定长参数使用&#xff0c;比如 void func(int a, …)。三个省略号&#xff0c;表示了不定长参数。注意&#xff1a;c标准规定了&#xff0c;函数必须…

va_start和va_end详解

1. 在C中&#xff0c;当无法列出传递函数的所有实参的类型和数目时&#xff0c;可以用省略号指定参数表。例如&#xff1a; void foo(...); void foo(parm_list,...); 2. 函数参数的传递原理 函数参数是以栈的形式存取&#xff0c;从右至左入栈。 参数的内存存放格式&#xff…

#、##、__VA_ARGS__和##__VA_ARGS__的作用

一、#用来把参数转换成字符串 例子一&#xff1a; #define P(A) printf("%s:%d\n",#A,A); int main(int argc, char **argv) { int a 1, b 2; P(a); P(b); P(ab); system("pause"); } 输出为&#xff1a; 例子二&#xff1a; #define SQUARE(x) …

“河南省数字化转型与信息技术应用创新专家研讨会-政府数字化转型推动信创产业发展”专场活动成功召开

由《中国信息化》杂志社主办的“2023河南省数字化转型与信息技术应用创新专家研讨会——政府数字化转型推动信创产业发展”专场活动于5月27日&#xff0c;在郑州成功举办。本次活动由深圳竹云科技股份有限公司协办&#xff0c;由河南省测绘学会、中国信息主管平台支持。中国交通…

史上最简单笔记本选购攻略(给对笔记本配置完全不懂的小白,建议收藏)

引言&#xff1a;这是我偶然间找到的一篇文章&#xff0c;面向对配置参数完全不懂的小白&#xff0c;高手请自动忽略哈 参考链接&#xff1a;http://www.360doc.com/content/19/0122/12/60764982_810572945.shtml 上周五&#xff0c;小安发了一条关于如何选购手机的攻略&#…

选购笔记本注意的要点

随着消费者对个人电脑移动需求的增加&#xff0c;笔记本电脑早已成为众多人心目中的首选。但是怎样选购好一台笔记本电脑&#xff1f;其实对于不了解这个行业的人来说&#xff0c;多数人还是比较茫然的。以下我们试着从几个方面探讨&#xff0c;了解哪些是购买笔记本电脑时应该…

linux-动态库制作与使用

​​​​​​(6条消息) linux-静态库制作与使用_云的小站的博客-CSDN博客 目录 创建动态库 使用动态库 根据静态库创建时写的两个源文件&#xff0c;我们来制作动态库 创建动态库 根据这2个源文件和2个头文件我们来学习制作动态库。 我们先让编译两个源文件成.o文件,注意要…

如何挑选电脑

我们如果需要挑选一个属于我们自己的办公设备&#xfe63;-&#xfe63;笔记本电脑&#xff0c;那我们应该通过哪些方面进行筛选呢&#xff1f;今天&#xff0c;向大家推荐应该怎么挑选适合自己的笔记本电脑。 首先第一点确认自己的需求&#xff0c;是需要配置高的或是配置相对…

笔记本选购指南2020双十一

对于很多电脑小白来说&#xff0c;选择电脑也是一件非常头疼的事情 各种**参数、配置&#xff0c;**在加上各位行业大佬给的建议&#xff0c;简直让人云里雾里&#xff01; 那么今天小黑就给大家介绍一下笔记本的一些基础知识&#xff0c;让你5分钟成为电脑小达人&#xff01;…

如何选择笔记本电脑

作为一个曾经的数码产品销售人猿&#xff0c;经常有朋友甚至是朋友的朋友问我买什么电脑好。我想说&#xff0c;去你丫的&#xff0c;外星人好不好&#xff0c;THINKPAD X1好不好&#xff0c;ROG好不好&#xff0c;DELL XPS 好不好&#xff0c;联想YOGA 6好不好&#xff0c;Mac…

怎么挑选笔记本电脑

怎么挑选笔记本电脑 最近割肉买了一台新笔记本&#xff0c;老的用了快5年了&#xff0c;硬件跟不上&#xff0c;电池的电量也是稍纵即逝&#xff0c;实在无法忍受。 顺便说一句&#xff0c;新电脑这顺畅的感觉&#xff0c;真香~ 这里说说我以前使用笔记本的一些不好地方&#…

教你配电脑:电脑小白如何选购笔记本电脑,笔记本性能知识,干货来了

长文预警&#xff1a;本文偏长&#xff0c;100%干货。适用于愿意理性选购笔记本电脑的知友。 喜欢跳跃式阅读的朋友请直接看加粗字体。 同时&#xff0c;也建议各位知友可以先行收藏&#xff0c;方便下次再看&#xff0c;俗话也有说“书到用时方恨少”&#xff0c;买笔记本&a…

2020年笔记本电脑选购指南

**本文首发微信公众号陈蛋蛋碎碎念&#xff0c;获取更多软件、教程、模板资源&#xff0c;请关注公众号。 最近在群里有小伙伴问关于选购电脑的事&#xff0c;毕竟开学季又要到了。刚好蛋蛋现在又在3C公司工作&#xff0c;所以平时也需要了解这方面的知识&#xff0c;于是就准…

Doc2Vec模型详解

Doc2Vec模型&#xff0c;是一种基于word2vec模型和分布式内存模型的文本特征提取方法。它是用于将单词序列转换为固定长度的向量表示的无监督算法。另外&#xff0c;与word2vec和分布式内存模型不同的是&#xff0c;doc2vec可以理解为单词和句子之间的关联关系&#xff0c;从而…

笔记本电脑选购技巧,还不会选电脑的看这篇

第一次买笔记本电脑的时候什么也不懂&#xff0c;瞎买然后用了不到一年时间&#xff0c;老是蓝屏。当时刚出来工作也没多久&#xff0c;也舍不得立刻换新的&#xff0c;总是拿去修实在太不方便了。后来&#xff0c;学习了一些电脑知识&#xff0c;自己重新买了一台笔记本电脑&a…

送您一份《学编程笔记本电脑选购指南》,建议收藏!

“王校长”花费100万组装了一台电脑 跑分更是冲到了亚洲第一&#xff0c;世界第四 仅是一块硬盘都比很多人家里的电脑还贵 小编也很好奇&#xff0c;这台百万电脑的具体配置到底怎样&#xff1f; 主板&#xff1a;DELL R7525&#xff08;2.8万左右&#xff0c;目前全国只有两…

(二)微服务中间键工作原理——nacos服务端服务注册心跳包(/nacos/v1/ns/instance/beat)源码解读

前言 上节内容我们通过分析nacos客户端源码&#xff0c;了解了nacos客户端是如何向服务端注册服务和发送心跳包的&#xff0c;本节内容话接上一节内容&#xff0c;我们通过分析nacos服务的源码&#xff0c;查看服务端是如何处理客户端注册时候的心跳包的。关于nacos服务端的源…

视频美颜sdk是什么?技术解析与实现原理详解

视频美颜技术的发展则为人们提供了一种美化自己的方式&#xff0c;因此&#xff0c;视频美颜技术成为了一个备受关注的领域。在这个领域中&#xff0c;视频美颜sdk技术则是实现高效美颜的关键因素之一。本文将从技术角度分析视频美颜sdk的实现原理和优势。 一、视频美颜技术的…

有关计算机科学与技术论文

有关计算机科学与技术论文篇一 《 计算方法在计算机科学与技术专业教学改革与实践 》 摘要&#xff1a;介绍了对计算机科学与技术专业的计算方法课程教学改革进行的尝试和探索&#xff0c;结合该专业提出了计算方法课程教学改革的几个重点及策略&#xff0c;优化了教学内容、…
最新文章