害羞的他给了你答案的病菌,但只有病菌。 在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字符串?相关推荐

  1. html语言文本框的符号,如何将文本框中的值作为HTML字符串提交?

    我正在使用react draft wysiwyg库,我希望文本框中输入的值是HTML字符串的形式. 我的州: editorState: EditorState.createEmpty editorSt ...

  2. 使用Python生成独一无二的字符串

    [原文链接]使用Python生成独一无二的字符串 文章目录 一.uuid简介 二.生成随机字符串 一.uuid简介 uuid.uuid1() 基于MAC地址.时间戳.随机数来生成唯一的uuid uui ...

  3. c语言中用rgb改颜色字体,C语言颜色转换宏

    C语言颜色转换宏 #define COLOR_BPP16_RGB555 /* Win RGB */ #define COLOR_RGB(r,g,b) ((COLORREF)(((BYTE)(r)|(( ...

  4. c语言提取颜色,C语言颜色转换宏

    C语言颜色转换宏 #define COLOR_BPP16_RGB555 /* Win RGB */ #define COLOR_RGB(r,g,b) ((COLORREF)(((BYTE)(r)|(( ...

  5. C语言编程>第十六周 ⑧ S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中

    例题:S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度.请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度. 例如,s=&qu ...

  6. C语言数字转换字符串

    转载自:https://www.cnblogs.com/bluestorm/p/3168719.html C语言itoa()函数和atoi()函数详解(整数转字符C实现) C语言提供了几个标准库函数, ...

  7. 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 )

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  8. C语言、嵌入式中几个非常实用的宏技巧

    宏打印函数 在我们的嵌入式开发中,使用printf打印一些信息是一种常用的调试手段.但是,在打印的信息量比较多的时候,就比较难知道哪些信息在哪个函数里进行打印. 特别是对于异常情况的打印,我们需要快速 ...

  9. R语言数据格式转换函数、数据类型判断函数(numeric、character、vector、matrix、data.frame、factor、logical)、R语言数据格式类型转换

    R语言数据格式转换函数.数据类型判断函数(numeric数值.character字符串.vector向量.matrix矩阵.data.frame数据表.factor因子.logical逻辑).R语言数 ...

最新文章

  1. mysql简拼_mysql实现汉字换拼音,及汉字转简拼
  2. 如何利用极致业务基础平台主界面容器工具配置出漂亮的业务系统
  3. -bash: fg: no job control -bash: /usr/java/jdk1.8.0_221-amd64/jre/bin: Is a directory
  4. python实现图形旋转_python轻松实现图片旋转
  5. liunxC下零碎知识点的总结
  6. Bugku-CTF之你必须让他停下+头等舱
  7. 深入update语句(延伸学习)
  8. 【清北学堂】 死亡(death)
  9. Spring @Import注解配置类方法内部调用没有注入属性值的坑
  10. matlab knn,MATLAB K近邻算法 — knnsearch() 函数 | 学步园
  11. usb声卡驱动(五):声卡驱动的开始
  12. Pytorch对梯度进行rescale
  13. Fang Fang 思维题
  14. 工程总承包(EPC)项目经理培训项目背景介绍
  15. win10系统设置还原点,系统永不奔溃
  16. 各版本JDK、JRE官方下载地址
  17. 【opencv-python不规则多边形 ROI提取】
  18. UE4中动画优化与压缩
  19. 浅谈windows 编程中SendMessage函数的妙用!!!
  20. 多方面看IP地址与常见的端口号~华山论剑

热门文章

  1. float取小数点后几位_python Integer整型与Float浮点型操作
  2. 全攻略:大病医疗专项附加扣除,一文集全了
  3. note_maven的基本使用
  4. textarea中插入标签_HTMLCSS学习笔记(二)-- HTML表单标签
  5. fastjson反序列化过滤字段属性_Fastjsonlt;=1.2.47反序列化漏洞源码分析及复现
  6. php代码提示助手,laravel自动补全助手ide-helper安置及配置
  7. handler机制的原理_Handler机制竟然可以这样解释,我惊呆了!
  8. 七牛上传图片html,MWEB+七牛 上传图片
  9. 数据结构折半查找例题_数据结构第9章例题与答案
  10. mysql mpm_使用Zabbix + MPM全面监控MySQL