¿Cuál es la combinación de caracteres alternativos para las comillas dobles en C/C++?
Pregunta
No he tenido la referencia de Kernighan y Ritchie C en años, pero recuerdo que había una página allí que hablaba sobre cómo ingresar caracteres que no estaban disponibles para usted.(En el pasado, algunos teclados carecían de caracteres como ", ~, etc.)
Para ser claro, déjame darte un ejemplo.Soy no Estoy buscando una manera de obtener comillas en cadenas, sino que quiero reemplazar esto:
printf("foo");
con este:
printf([alternate sequence]foo[alternate sequence]);
Para los curiosos, tengo un proceso automatizado que implica generar código C/C++, pero la herramienta comercial (de código cerrado) involucrada elimina las comillas en sus flujos de datos y la documentación es bastante clara sobre el hecho de que no proporcionan una forma de escapar. a ellos.
EDITAR:
Vaya, no esperaba una respuesta tan dura.Esto podría merecer un poco más de detalle sobre mi proceso.Estoy creando sistemas de compilación automatizados, lo que significa que vivo con ciertas restricciones cuando se trata de cambiar el código que estoy compilando.Por ahora, tenemos que vivir con la suposición de que tengo que incluir una cadena, espacios y todo, en una definición de preprocesador.ya bajé el Carretera 'PreprocessorDefinition'.Esto me dejó con mi alternativa habitual:Defina la cadena en el entorno operativo y haga que el archivo del proyecto establezca la definición desde allí:
Preprocessor Definitions WIN32;_DEBUG;THINGIE=$(THINGIE)
La esperanza era poder evitar la eliminación de comillas de MSVC en cualquier cosa entregada a la compilación con /D usando un trígrafo, haciendo algo como esto en mi script de automatización de compilación:
ENV['THINGIE'] = "??''Yodeling Monkey Nuggets??''"
run_msbuild_command
Supongo que es hora de un plan C.
Solución
Se busca un trigraph de carácter "
? No creo que exista.
Los tri-grafos no existen para todos los caracteres. Sólo unos pocos personajes tienen secuencias trigraph.
Otros consejos
Ninguno según el estándar. Intenta que incluye una cabecera con una macro:
#define QUOTE(x) #x
y generar una printf
como:
printf(QUOTE(hello));
estás pensando en trigrafos
Character Trigraph
[ ??(
\ ??/
] ??)
^ ??'
{ ??<
| ??!
} ??>
~ ??-
# ??=
pero "no está en la lista
Creo que estás hablando trigrafos . Por lo que he leído, no hay uno para el "carácter.
pero el (código cerrado) de la herramienta involucrados tiras comerciales cotizaciones en sus flujos de datos y la documentación es bastante clara en el hecho de que no proporcionan una manera de escapar de ellos.
Suena como una herramienta de mierda.
Se ve feo, pero usted podría intentar algo como esto:
static const char foo[] = {'H', 'e', 'l', 'l', 'o', 0};
printf(foo);
También me gusta de dirkgently sugerencia de utilizar #
en una macro, sin embargo, me pregunto cómo que ver con espacios?
¿Que opinas sobre el uso de ´
en lugar de '
?
Me enfrenté al mismo problema y trató de evitarlo mediante la sustitución del delimitador de texto por algo inofensivo.