Какова комбинация альтернативного символа для символа двойной кавычки в C/C++?

У меня не было Kernighan и Ritchie C ссылка в течение многих лет, но я помню, что была страница там, это говорило о том, как ввести символы, которые были недоступны Вам. (ПУТЬ назад в день, некоторые клавиатуры испытали недостаток в символах как", ~, и т.д.),

Чтобы быть ясными, позвольте мне дать пример. Я не ищу способ получить кавычки в строках, а скорее, я хочу заменить это:

printf("foo");

с этим:

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

Для любопытного у меня есть автоматизированный процесс, который включает генерирующий код C/C++, но коммерческий включенный инструмент (с закрытым исходным кодом) разделяет кавычки в своих потоках данных, и документация является довольно четкой на том, что они не позволяют выходить из них.

Править:

Ничего себе, я не ожидал такой тяжелый ответ. Это могло бы заслужить немного больше детали о моем процессе. Я делаю автоматизированные системы сборки, что означает, что я живу с определенными ограничениями когда дело доходит до изменения кода, который я компилирую. На данный момент мы должны жить учитывая, что я должен получить строку, пробелы и все, в определение препроцессора. Я уже шел по 'PreprocessorDefinition' road. Это оставило меня с моей обычной нейтрализацией: Определите строку в операционной среде и имейте файл проекта, устанавливает определение оттуда:

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

Надежда состояла в том, что я мог обойти разделение MSVC кавычек в чем-либо врученном сборке с/D использование trigraph путем выполнения чего-то вроде этого в моем сценарии автоматизации сборки:

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

Я предполагаю, что время для плана C.

6
задан Cœur 17 July 2018 в 03:15
поделиться

5 ответов

Вы ищете триграф для символа "? Не думаю, что он существует.

Триграфы существуют не для всех персонажей. Только несколько символов имеют триграфные последовательности.

10
ответ дан 8 December 2019 в 04:52
поделиться

Я думаю, вы говорите о триграфах . Насколько я читал, для символа "нет ни одного".

3
ответ дан 8 December 2019 в 04:52
поделиться
, но коммерческий инструмент (с закрытым исходным кодом) включал разделение кавычек в свои потоки данных, и документация довольно четко указывает на то, что они не предоставляют способа избежать их.

Похоже на дрянной инструмент.

Выглядит некрасиво, но вы можете попробовать что-то вроде этого:

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

printf(foo);

Мне также нравится предложение dirkgently использовать # в макросе, однако мне интересно, как это будет делать с пробелами?

{ {1}}
0
ответ дан 8 December 2019 в 04:52
поделиться

вы думаете о триграфах

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

но " не входит в список

4
ответ дан 8 December 2019 в 04:52
поделиться

Нет в соответствии со стандартом. Попробуйте включить заголовок с макросом:

 #define QUOTE(x) #x

и сгенерировать printf как:

 printf(QUOTE(hello));
8
ответ дан 8 December 2019 в 04:52
поделиться