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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top