加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在字符串上使用C预处理器?

发布时间:2020-12-16 06:46:58 所属栏目:百科 来源:网络整理
导读:预处理器可用于使用#define将某些关键字替换为其他单词.例如,我可以执行#define name“George”,每次预处理器在程序中找到“name”时,它将用“George”替换它. 但是,这似乎只适用于代码.我怎么能用字符串和文本做到这一点?例如,如果我在屏幕上打
预处理器可用于使用#define将某些关键字替换为其他单词.例如,我可以执行#define name“George”,每次预处理器在程序中找到“name”时,它将用“George”替换它.

但是,这似乎只适用于代码.我怎么能用字符串和文本做到这一点?例如,如果我在屏幕上打印“Hello I am name”,我希望’name’替换为“George”,即使它是在字符串而不是代码中.

我不想手动搜索字符串中的关键字,然后替换它们,而是想要使用预处理器来切换单词.

这可能吗?如果是这样的话?

我正在使用C但C解决方案也是可以接受的.

解决方法

#define name "George"

printf("Hello I am " name "n");

相邻的字符串文字在C和C中连接.

C和C标准引用:

对于C(引用C99,但C11在6.4.5p5中有类似的东西):

(C99,6.4.5p5) “In translation phase 6,the multibyte character sequences specified by any sequence of adjacent character and identically-prefixed string literal tokens are concatenated into a single multibyte character sequence.”

对于C:

(C++11,2.14.5p13) “In translation phase 6 (2.2),adjacent string literals are concatenated.”

编辑:根据要求,添加C和C标准的引号.感谢@MatteoItalia提供的C 11报价.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读