macro:来自char literal的字符串文字

在C中是否有办法使用宏从字符文字创建字符串文字

比如我有

'a'

我想创建字符串文字

"a"

澄清问题:

#define A 'a'

write(fd,"x=" CHAR2STRING(A) "\n",4);

我的问题是如何定义宏CHAR2STRING

解决方法

– 对问题的评论摘要

这似乎无法实现.作为替代方案,可以定义字符串文字并改为编写STRING2CHAR宏:

#define A "a"
#define STRING2CHAR(s) (*(s))
write(fd,"x=" A "\n",4);
putchar(STRING2CHAR(A));

要么

#define A a
#define XSTR(s) #s
#define SYM2CHAR(sym) (*XSTR(sym))
#define SYM2STRING(sym) XSTR(sym)

表达式*“a”不是编译时常量(因此,例如它不能用作具有非自动存储持续时间的对象的初始化器,非VLA数组长度,案例标签或位域尽管编译器应该能够在编译时对其进行评估(使用Gcc和Clang测试).

建议于M OehmMatt McNabb.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...