c语言宏 转换字符串,c预处理程序-如何从C宏的值生成char字符串?
害羞的他给了你答案的病菌,但只有病菌。 在C预处理器中将值转换为字符串的基本技术确实是通过'#'运算符进行的,但是对所提出的解决方案进行简单的音译会产生编译错误:
#define TEST_FUNC test_func
#define TEST_FUNC_NAME #TEST_FUNC
#include
int main(void)
{
puts(TEST_FUNC_NAME);
return(0);
}
语法错误在'puts()'行上-问题是源中的'stray#'。
在C标准的6.10.3.2节中,“#运算符”表示:
中的每个#个预处理令牌 类似功能的替换列表 宏后应跟一个参数 作为下一个预处理令牌 替换清单。
问题在于您可以将宏参数转换为字符串-但不能转换不是宏参数的随机项。
因此,要达到您想要的效果,您当然必须做一些额外的工作。
#define FUNCTION_NAME(name) #name
#define TEST_FUNC_NAME FUNCTION_NAME(test_func)
#include
int main(void)
{
puts(TEST_FUNC_NAME);
return(0);
}
对于您打算如何使用宏以及如何完全避免重复,我还不太清楚。 这个稍微复杂一些的示例可能会提供更多信息。 使用与STR_VALUE等效的宏是一种惯用法,它是获得所需结果所必需的。
#define STR_VALUE(arg) #arg
#define FUNCTION_NAME(name) STR_VALUE(name)
#define TEST_FUNC test_func
#define TEST_FUNC_NAME FUNCTION_NAME(TEST_FUNC)
#include
static void TEST_FUNC(void)
{
printf("In function %s\n", TEST_FUNC_NAME);
}
int main(void)
{
puts(TEST_FUNC_NAME);
TEST_FUNC();
return(0);
}
*首次写此答案时,shoosh的名称使用“ Shy”作为名称的一部分。
c语言宏 转换字符串,c预处理程序-如何从C宏的值生成char字符串?相关推荐
- html语言文本框的符号,如何将文本框中的值作为HTML字符串提交?
我正在使用react draft wysiwyg库,我希望文本框中输入的值是HTML字符串的形式. 我的州: editorState: EditorState.createEmpty editorSt ...
- 使用Python生成独一无二的字符串
[原文链接]使用Python生成独一无二的字符串 文章目录 一.uuid简介 二.生成随机字符串 一.uuid简介 uuid.uuid1() 基于MAC地址.时间戳.随机数来生成唯一的uuid uui ...
- c语言中用rgb改颜色字体,C语言颜色转换宏
C语言颜色转换宏 #define COLOR_BPP16_RGB555 /* Win RGB */ #define COLOR_RGB(r,g,b) ((COLORREF)(((BYTE)(r)|(( ...
- c语言提取颜色,C语言颜色转换宏
C语言颜色转换宏 #define COLOR_BPP16_RGB555 /* Win RGB */ #define COLOR_RGB(r,g,b) ((COLORREF)(((BYTE)(r)|(( ...
- C语言编程>第十六周 ⑧ S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中
例题:S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度.请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度. 例如,s=&qu ...
- C语言数字转换字符串
转载自:https://www.cnblogs.com/bluestorm/p/3168719.html C语言itoa()函数和atoi()函数详解(整数转字符C实现) C语言提供了几个标准库函数, ...
- 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 )
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
- C语言、嵌入式中几个非常实用的宏技巧
宏打印函数 在我们的嵌入式开发中,使用printf打印一些信息是一种常用的调试手段.但是,在打印的信息量比较多的时候,就比较难知道哪些信息在哪个函数里进行打印. 特别是对于异常情况的打印,我们需要快速 ...
- R语言数据格式转换函数、数据类型判断函数(numeric、character、vector、matrix、data.frame、factor、logical)、R语言数据格式类型转换
R语言数据格式转换函数.数据类型判断函数(numeric数值.character字符串.vector向量.matrix矩阵.data.frame数据表.factor因子.logical逻辑).R语言数 ...
最新文章
- mysql简拼_mysql实现汉字换拼音,及汉字转简拼
- 如何利用极致业务基础平台主界面容器工具配置出漂亮的业务系统
- -bash: fg: no job control -bash: /usr/java/jdk1.8.0_221-amd64/jre/bin: Is a directory
- python实现图形旋转_python轻松实现图片旋转
- liunxC下零碎知识点的总结
- Bugku-CTF之你必须让他停下+头等舱
- 深入update语句(延伸学习)
- 【清北学堂】 死亡(death)
- Spring @Import注解配置类方法内部调用没有注入属性值的坑
- matlab knn,MATLAB K近邻算法 — knnsearch() 函数 | 学步园
- usb声卡驱动(五):声卡驱动的开始
- Pytorch对梯度进行rescale
- Fang Fang 思维题
- 工程总承包(EPC)项目经理培训项目背景介绍
- win10系统设置还原点,系统永不奔溃
- 各版本JDK、JRE官方下载地址
- 【opencv-python不规则多边形 ROI提取】
- UE4中动画优化与压缩
- 浅谈windows 编程中SendMessage函数的妙用!!!
- 多方面看IP地址与常见的端口号~华山论剑
热门文章
- float取小数点后几位_python Integer整型与Float浮点型操作
- 全攻略:大病医疗专项附加扣除,一文集全了
- note_maven的基本使用
- textarea中插入标签_HTMLCSS学习笔记(二)-- HTML表单标签
- fastjson反序列化过滤字段属性_Fastjsonlt;=1.2.47反序列化漏洞源码分析及复现
- php代码提示助手,laravel自动补全助手ide-helper安置及配置
- handler机制的原理_Handler机制竟然可以这样解释,我惊呆了!
- 七牛上传图片html,MWEB+七牛 上传图片
- 数据结构折半查找例题_数据结构第9章例题与答案
- mysql mpm_使用Zabbix + MPM全面监控MySQL