C语言 打印转换后的 宏名

【C语言】如何打印出c语言变量名称 (# 和 ## 的使用) 之前做项目时候遇到一个问题,比如说一个流程中有很多个step,这些我用一个enum来定义,比如: enum ACTION { ACTION_jiashui = 0, //加水 ACTION_jiaoban, //搅拌 ACTION_biaoding, //标定 ACTION_celiang, //测量 } 这时候,在跑到每个步骤开始的时候,我都会把当前步骤的名称打印出来 比如 printf(“Cur action - %d\r\n”,ACTION_jiaoban); 阅读详情

代码

#include <stdio.h>

#define TEST_DEFINE 16

#define _VNAME(name) (#name)
#define VNAME(name)	(_VNAME(name)) // 加一层中间层,先把外面的转换好了再到里面转换成字符串

int main(void)
{
	printf("%s \n", VNAME(TEST_DEFINE));
	
	return 0;
}

效果

在这里插入图片描述

C语言打印某年日历 个人C语言学习记录................................. 阅读详情

相关推荐

C语言宏的使用

之所以写这篇文章,是因为最近在使用类似printf之类的函数格式化uint64_t类型数据的时候,由于uint64_t在32位和64位平台下定义类型不一样,编译器会有Wformat警告。

初见时的微笑 896

C语言:运行中获取宏名字的技巧

在调试C语言程序时,有时需要打印宏的名字。可以通过定义宏,宏名字的数组来获得。 例如: [cpp] view plaincopy #include       #define MACRO_STR(x) {x, #x}  //#x即可取到x的整个字符串 //#define MACRO_FUNC(type) {type##

2903

【C语言】编译过程中查看某个宏的值

要查看宏的值,应该使用字符串化运算符 # 来将宏转换为字符串,但是由于 #pragma message 本身就是预处理器指令,所以正确的使用方式是直接在后面跟上宏的名称。比如,如果编译器不支持直接在 #pragma message 中使用宏展开,可能需要转而使用其他实现定义,或者简单地使用 printf 在程序运行时输出宏的值。: 如果在使用GCC,可以使用`#pragma message`来输出宏的值。在C语言中,使用 #pragma message 打印宏的值时,应当直接使用宏的名称。

数字人生 2864

C/C++打印宏或变量名称与值

【代码】C/C++打印宏或变量名称与值。

小飞将的博客 1931

【C语言】C语言标准库大梳理(超全)

【C语言】C语言标准库大梳理(超全))博主介绍前言显示8进制和16进制字符串I/O定义字符串字符串函数💫点击直接资料领取💫 博主介绍 🌊 作者主页:苏州程序大白 🌊 作者简介:🏆优快云人工智能域优质创作者🥇,苏州市凯捷智能科技有限公司创始之一,目前合作公司富士康、歌尔等几家新能源公司 💬如果文章对你有帮助,欢迎关注、点赞、收藏(一键三连)和C#、Halcon、python+opencv、VUE、各大公司面试等一些订阅专栏哦 💅 有任何问题欢迎私信,看到会及时回复 💅关注苏州程序大白,分享粉丝福利 前言

苏州程序大白的博客 1万+

自动驾驶关键技术(一):时间敏感网络TSN

时间敏感网络TSN的基本概念、协议族介绍和开发流程。

3079

C语言通过宏定义实现便捷打印参数值和参数名

C语言常用的调试用函数,例如打印参数名和数值、记录日志文件、格式化打印一维和二维数组、二进制信息等。

硫酸锌01的博客 3040

LTspice introduction - 2 LTspice的界面

LTspice的界面主要有两个:Schematic Capture和Waveform Viewer Schematic Capture 它主要是用来画电路图的,画完电路图之后,添加一些dot 命令同时选择一些仿真的参数,点击执行(Run)Waveform Viewer 如果你的仿真不是op point的话,一个都会打开它,在它里面你可以画图相应的图形。 有两种方式可以在Viewer

贾亮的专栏 3220

C程序中获取变量/宏名称的方法

在C程序中怎么打印一个变量的名称呢?利用#,看代码: #include "stdio.h" #define VNAME(value) (#value) int main(void) { int autoVal = 1; #define MACRO_TEST (6) printf("auto value name is %s\n",VNAME(autoVal)); printf("m...

@角色扮演# 5945

IntelliJ IDEA 2025.1 + Gradle 镜像配置避坑指南:解决依赖下载慢的终极方案

本文针对IntelliJ IDEA 2025.1开发环境中Gradle依赖下载缓慢的问题,提供了详细的镜像配置避坑指南。通过解析Gradle依赖解析机制,重点指导如何正确配置阿里云等国内镜像仓库,并分享验证配置生效、排查常见错误及高级优化技巧,旨在彻底解决依赖下载难题,提升开发效率。

weixin_28835551的博客 532

Modbus4J vs EasyModbus4J:哪个Java库更适合你的工业项目?

本文深入对比了Java领域两大Modbus通信库Modbus4J与EasyModbus4J。Modbus4J设计稳健、类型安全,适合复杂业务集成;EasyModbus4J基于Netty,在高并发场景下性能更优。文章从架构、性能、API及生产环境多维度分析,为工业物联网项目选型提供决策依据。

weixin_28475533的博客 310

C语言打印宏定义/枚举变量 名称和变量值

打印宏定义变量和值

Joke 1864

【驭风计划 算法训练营】周测4:习题11-4、8-4、12-4

给出 nn 个非负整数 x1,x2,⋯,xnx1,x2,⋯,xn,有 qq 个询问,第 jj 个询问给出一个非负整数 yjyj,求其中,xor 表示按位异或运算。

Mege1的博客 1042

日志打印之C语言宏打印日志

宏打印函数 嵌入式开发中,使用printf打印一些信息是一种常用的调试手段。但是,在打印的信息量比较多的时候,就比较难知道哪些信息在哪个函数里进行打印。特别是对于异常情况的打印,我们需要快速定位到异常情况的位置。 这时候我们可以使用宏定义来封装一个宏打印函数,这个宏打印函数可以显示打印信息所在的文件、行数、函数名等信息。如: //log.h #ifndef __LOG__ #define __LOG__ #include<stdio.h> #include<stdlib.h> #i

weixin_45787652的博客 2484

科研绘图实战:用Adobe Illustrator高效排版期刊论文图片

本文详细介绍了使用Adobe Illustrator高效排版科研论文图片的完整工作流。针对期刊投稿常见的图片格式问题,文章重点讲解了矢量图与位图的预处理、AI中的精准对齐与分布技巧、文字样式统一管理以及最终输出TIFF/PDF等符合出版要求的格式。掌握这套方法能确保图片满足高分辨率、规范字体和精确尺寸等期刊硬性标准,显著提升投稿效率。

tomato的博客 1428

保姆级教程:用rosbag录制和回放你的第一个ROS机器人数据(附C++/Python代码)

本文提供了一份详细的ROS机器人数据录制与回放教程,涵盖从命令行操作到C++/Python编程实现的全流程。通过rosbag工具,开发者可以高效记录和回放机器人运行时的传感器数据和控制指令,适用于故障复现、算法调试等多种场景。教程还包含高级技巧如时间同步和大文件处理,帮助用户快速掌握ROS数据管理核心技能。

weixin_29313239的博客 283

C语言进阶——宏

本文主要介绍了C语言中宏定义的相关知识,包括宏的定义和使用、替换规则、与函数的对比等。首先阐述了无参宏和带参宏的定义方式及使用场景,详细说明了宏的替换规则。其次对比了宏和函数在代码长度、执行速度、操作符优先级等方面的差异。然后介绍了#undef、#和##运算符的用法,以及条件编译指令#if、#ifdef等的使用。最后讲解了预定义符号和offsetof宏的实现原理,包括自定义MY_OFFSETOF宏的方法。全文系统性地介绍了宏在C语言预处理阶段的各种应用技术。

Ra337620的博客 1381

实用指南:制作通用的INCA和CANape兼容A2L文件

A2L(ASAM MCD-2 Measurement and Calibration Data)文件是描述ECU(电子控制单元)测量和校准数据的标准文件格式。在标定工作中,A2L文件扮演着极为重要的角色,它定义了测量通道、校准参数等关键信息,为工程师提供了统一的描述方式。INCA和CANape是两种常见的汽车电子系统标定工具,分别由ETAS和Vector公司开发。它们在汽车电子系统的开发和调试过程中发挥着重要作用,提供了丰富的标定功能和用户友好的界面。

一直在水些技术小文 2922

C语言大佬的必杀技---宏的高级用法

c语言宏的高级用法,魔法效果

qq_62989250的博客 9823

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

c语言串口打印日志,日志打印之C语言宏打印日志

宏打印函数嵌入式开发中,使用printf打印一些信息是一种常用的调试手段。但是,在打印的信息量比较多的时候,就比较难知道哪些信息在哪个函数里进行打印。特别是对于异常情况的打印,我们需要快速定位到异常情况的位置。这时候我们可以使用宏定义来封装一个宏打印函数,这个宏打印函数可以显示打印信息所在的文件、行数、函数名等信息。如://log.h#ifndef __LOG__#define __LOG__#...

weixin_30181209的博客 963

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C语言宏的实现作业

答案:解析: 宏定义在 头文件中,是获取结构体成员偏移量的标准方法举例: (type*)0是将数值0强制转换为指向type类型的指针,相当于创建了一个指向地址0的虚拟结构体指针。->member,通过指针访问结构体成员,同时由于指针指向地址0,成员的地址就是它的偏移量。解释:将一个结构体指针指向地址0时,我们实际上是在创建一个"参考坐标系",结构体的起始位置就是地址0,成员的地址 = 起始地址 + 偏移量。数学理解: (char*)0就是地址0,而 = 加上偏移量,结果就是偏移量的数值。可视化理解

2401_88251472的博客 943

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C语言预定义宏与日志打印

标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义.

scott198512的博客 1104

C语言宏高级用法背后技术详解

宏定义是C语言预处理器的核心功能之一。它允许我们将一段代码或值赋予一个特定的名称,然后在代码中使用这个名称来代替原始代码或值。在编译之前,预处理器会自动将宏名称替换为其对应的代码或值。(a) : (b))在上面的例子中,我们定义了一个名为PI的宏,它代表圆周率的值;同时定义了一个名为MIN的宏,它接受两个参数a和b,并返回它们中的较小值。本文第一部分介绍了C语言宏的基础知识,包括宏定义、宏替换和宏参数。通过这些基础概念,我们可以开始探索宏的高级用法,并利用它们来编写更加高效、灵活的代码。

极客代码 1407

【嵌入式】C语言程序调试和宏使用的技巧

00. 目录 文章目录00. 目录01. 调试相关的宏02. # 字符串化操作符03. ## 连接操作符04. 调试宏第一种形式05. 调试宏的第二种定义方式06. 对调试语句进行分级审查07. 条件编译调试语句08. 使用do...while的宏定义09. 代码剖析10. 附录 01. 调试相关的宏 在Linux使用gcc编译程序的时候,对于调试的语句还具有一些特殊的语法。gcc编译的过程中,会生成一些宏,可以使用这些宏分别打印当前源文件的信息,主要内容是当前的文件、当前运行的函数和当前的程序行。 具体宏

C/C++软件工程师、嵌入式软件工程师、物联网研发工程师、C/C++讲师、物联网讲师、嵌入式讲师、鸿蒙讲师---欢迎大家一起交流(私信添加博主微信) 4171

C语言:define定义常量和定义宏(详解)

本篇博客给大家带来的是#define定义常量和#define定义宏的方法

就业知识博客 2582

C语言中宏的用法总结

宏在C语言中使用广泛,但考虑不周全经常会遇到各种陷阱,所以总结了一下。代码部分测试。

梦里挑灯看剑 579
上一篇: 插件 桌面图标太多而影响观看壁纸 可用于 wallpaper
下一篇: 插件 实用的窗口置顶小工具 TopMost
嵌入一下?
博客等级 码龄6年 324粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入一下?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值