【发布时间】:2010-02-05 18:01:26
【问题描述】:
我已经好几年没有参考 Kernighan 和 Ritchie C 了,但我记得那里有一个页面讨论了如何输入您无法使用的字符。 (在过去,有些键盘缺少“、~ 等字符”)
为了清楚起见,让我举个例子。我不是在寻找一种在字符串中获取引号的方法,而是我想替换它:
printf("foo");
用这个:
printf([alternate sequence]foo[alternate sequence]);
出于好奇,我有一个涉及生成 C/C++ 代码的自动化过程,但是(封闭源代码)商业工具涉及在其数据流中去除引号,并且文档非常清楚它们不提供逃避他们的方法。
编辑:
哇,我没想到会有这么大的反应。这可能值得对我的过程进行更多详细说明。我正在做自动构建系统,这意味着在更改我正在编译的代码时我会受到某些限制。现在,我们必须接受这样的假设,即我必须将字符串、空格和所有内容放入预处理器定义中。我已经去了'PreprocessorDefinition' road。这给我留下了我通常的后备:在操作环境中定义字符串并让项目文件从那里设置定义:
Preprocessor Definitions WIN32;_DEBUG;THINGIE=$(THINGIE)
希望通过在我的构建自动化脚本中执行类似的操作,我可以绕过 MSVC 在使用三元组使用 /D 传递给构建的任何内容中去除引号:
ENV['THINGIE'] = "??''Yodeling Monkey Nuggets??''"
run_msbuild_command
我想是时候制定 C 计划了。
【问题讨论】:
-
能否进一步处理程序的输出?如果你能做到这一点,你可以为
"声明一些罕见的字符序列,并将该程序的输出通过管道传递给sed,这会返回你的双引号。 -
是时候考虑生成一个包含引号的标题,然后在需要预处理器定义的地方包含该标题。
标签: c++ c character sequences alternate