Trígrafos são como as drogas. A pessoa nasce sem saber que elas existem, até que um dia começa a usá-las porque alguém veio e disse que elas fazem mal.
Vamos a um exemplo básico de C++:
#include <stdio.h>
int main()
{
char hello[] = "Hello world!"; //Será q vai imprimir??????/
printf( "%s", hello );
getchar();
return 0;
}
int main()
{
char hello[] = "Hello world!"; //Será q vai imprimir??????/
printf( "%s", hello );
getchar();
return 0;
}
E aí, vai imprimir "Hello world!" ou não?
Acredite, em um compilador que segue as normas, este programa não irá imprimir nada.
Como não?
Diz a lenda que, quando escrevemos ??/, estes três caracteres são substituídos por "\", o que coloca o "printf" na mesma linha do comentário. Isso é um trígrafo.
Outros trígrafos são:
Trigrafo | Equivalente |
??! | | |
??< | { |
??> | } |
??/ | \ |
??' | ^ |
??- | ~ |
??= | # |
??( | [ |
??) | ] |
Ou seja, podemos escrever um Hello World perfeitamente válido da seguinte forma:
#include <stdio.h>
int main()
??<
char hello??(??) = "Hello world!";
printf( "%s", hello );
getchar();
return 0;
??>
int main()
??<
char hello??(??) = "Hello world!";
printf( "%s", hello );
getchar();
return 0;
??>
Isso foi inventado porque estes 9 caracteres não fazem parte da ISO 646. Assim, para que seja possível programar em qualquer teclado compatível com esta norma, os trígrafos foram criados.
Hoje em dia isso é tão inútil que alguns compiladores (como o próprio GCC) resolveram deixá-los de fora por default. Para habilitar trígrafos no GCC, deve-se passar -trigraphs por parâmetro na linha de compilação.
Se isso não serve pra nada, por que eu postei? Sei lá.
Ainda bem que não mencionei os dígrafos...
Nenhum comentário:
Postar um comentário