Projeto de fim de semana: brincando com C de forma divertida
- A linguagem C é simples e poderosa, permitindo escrever até um sistema operacional inteiro com relativa facilidade
- A sintaxe concisa de C influenciou muitas linguagens posteriores, como Java e Go
- Também contribuiu para o surgimento da arte da ofuscação de código
Concurso IOCCC
- O concurso IOCCC é um exemplo clássico de ofuscação de código
- As inscrições do concurso frequentemente usam macros de pré-processador confusas, formatação ilógica e nomes de variáveis nada úteis
- Esse tipo de código é difícil de ler, mas C consegue ser ao mesmo tempo legível e confuso
Instrução switch
- A instrução
switch, assim como if e for, não exige chaves
- Quando usada sem chaves, só pode conter uma única instrução
- A instrução
switch é basicamente um goto com grife
- Inicializar variáveis dentro de um
switch pode causar comportamentos inesperados
Rótulos case
- Os rótulos
case não precisam ficar no nível mais alto do bloco de um switch
- Podem ser usados junto com a condição
if (0)
- Também podem funcionar sem a instrução
break
Combinação de else e if
- É possível usar
else e if para substituir a instrução switch
- Dá para lidar com várias condições mesmo sem usar chaves
Extensões GNU
- É possível usar o operador
&& para obter o endereço de um rótulo e saltar até ele com goto
- Isso permite substituir a instrução
switch
Substituindo for
- É possível implementar laços usando rótulos dentro da declaração de variáveis
- Embora seja algo específico do GCC, ainda assim dá para escrever código muito criativo e confuso em C
Conclusão
- C oferece a possibilidade de escrever código extremamente criativo e confuso
- Embora esse código seja difícil de ler, ele demonstra o poder da linguagem C
Opinião do GN⁺
- Este artigo mostra muito bem a originalidade e a complexidade da linguagem C
- É útil para explorar as várias possibilidades de uso da linguagem C
- O lado artístico da ofuscação de código também é interessante
- Os exemplos com extensões GNU são muito peculiares e criativos
- Para desenvolvedores iniciantes aprendendo C, pode ser um pouco difícil
Ainda não há comentários.