我已经没有在几年Kernighan和Ritchie C基准,但我记得,有在那里一个网页,谈到了如何输入不可用你的字符。 (WAY早在一天,某些键盘缺乏类似的字符”,〜,等)

要清楚,让我举一个例子。我的寻找一种方式来获得在字符串引号,而是,我要取代这个:

printf("foo");

与此:

printf([alternate sequence]foo[alternate sequence]);

有关的好奇,我的自动过程包括产生C / C ++代码,但(闭源)的商业工具参与条引号在其数据流和文件是这样的事实,很显然,它们不提供一个方式来逃避他们。

编辑:

哇,我没有预料这样一个沉重的响应。这可能对我的过程值得更多的细节。我做的自动化构建系统,这意味着我生活在一定的限制,当谈到改变,我编译代码。现在,我们要住在一起,我要得到一个字符串,空格和所有,成一个预处理definiton的假设。我已经走下“PreprocessorDefinition”道路。这给我留下了我一贯的回退:在定义操作环境的字符串,并有项目文件从那里设置的定义:

Preprocessor Definitions     WIN32;_DEBUG;THINGIE=$(THINGIE)

在希望的是,我可以用三字符,在我的构建自动化脚本做这样的事情得到解决的报价MSVC的剥离任何东西交给构建与/ d:

ENV['THINGIE'] = "??''Yodeling Monkey Nuggets??''"
run_msbuild_command

我想它的时间为一个方案C

有帮助吗?

解决方案

您正在寻找一个三字母"性格吗?我不认为存在一个。

三字母不存在对所有字符。只有几个字符有字母序列。

其他提示

无按照标准。尝试包括与宏报头:

 #define QUOTE(x) #x

和产生printf为:

 printf(QUOTE(hello));

您所想三字母

 Character   Trigraph
 [           ??(
 \           ??/
 ]           ??)
 ^           ??'
 {           ??<
 |           ??!
 }           ??>
 ~           ??-
 #           ??=

但“清单上的心不是

我觉得你是在谈论三合。据我读过,没有一个用于“字符。

但(闭源)在其数据流的商业工具条参与报价和文档的事实很清楚,他们不提供一种方式来逃避他们。

听起来像是一个蹩脚工具。

它看起来丑陋,但你可以尝试这样的事:

static const char foo[] = {'H', 'e', 'l', 'l', 'o', 0};

printf(foo);

我也喜欢dirkgently的建议,在宏使用#,但是我不知道怎么会用空格怎么办?

您如何看待使用´代替'什么?

我面临同样的问题,并试图通过用一些无害替换文本分隔符,以避免它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top