Uma sintaxe alternativa do C/C++ que você provavelmente não sabia

E de quebra ainda saiba sobre a sintaxe Troll!


Uma sintaxe alternativa do C/C++ que você provavelmente não sabia

O código-fonte C++ (e C) pode ser escrito em qualquer conjunto de caracteres não ASCII de 7 bits que inclua o conjunto de caracteres invariante ISO 646:1983 .

No entanto, vários operadores e pontuações C++ requerem caracteres que estão fora do conjunto de códigos ISO 646: {, }, [, ], #, \, ^, |, ~.

Para poder usar codificações de caracteres onde alguns ou todos esses símbolos não existem (como o DIN 66003 do alemão ), C++ define as seguintes alternativas compostas de caracteres compatíveis com ISO 646.

Padrão Alternativo
&& and
&= and_eq
& bitand
| bitor
~ compl
! not
!= not_eq
|| or
|= or_eq
^ xor
^= xor_eq
{ <%
} %>
[ <:
] :>
# %:
## %:%:

Sabendo disso você criar um código nesse estilo: vim main.cpp

%:include <iostream>
 
struct X
<%
    compl X() <%%> // destructor
    X() <%%>
    X(const X bitand) = delete; // copy constructor
 
    bool operator not_eq(const X bitand other)
    <%
       return this not_eq bitand other;
    %>
%>;
 
int main(int argc, char* argv<::>) 
<%
    auto greet = <:bitand:>(const char* name)
    <%
        std::cout << "Olá " << name
                  << "! Você está executando o arquivo: " << argv<:0:> << '\n';
    %>;
 
    if (argc > 1 and argv<:1:> not_eq nullptr) <%
        greet(argv<:1:>);
    %> else <%
        greet("Anônimo");
    %>
%>

Se você compilar e rodar, a saída será:

g++ main.cpp -o alternativo
./alternativo Marcos
Olá Marcos! Você está executando o arquivo: ./alternativo

Compatibilidade com C

As mesmas palavras são definidas na linguagem de programação C no arquivo de inclusão <iso646.h> como macros. Porque em C++ eles são integrados à linguagem.

Exemplo na linguagem C: vim main.c

%:include <stdio.h>

int main(int argc, char* argv<::>)
<%
  
  char * name = "Anônimo";
  
  if( argc > 1 ){
   name = argv<:1:>;
  }

  printf("Olá, %s! Você está rodando do arquivo: %s\n", name, argv<:0:>);
  return 0;
%>

Compilando e rodando:

gcc main.c -o alternativo
./alternativo
Olá Anônimo! Você está executando o arquivo: ./alternativo

Ainda há os Trígrafos também, mas foram retirado do C++17, são eles:

Primário Tígrafo
{ ??<
} ??>
[ ??(
] ??)
# ??=
\ ??/
^ ??’
| ??!
~ ??-

Curiosidade trolll-style

Macros são algo realmente assustadores, se você criar um header estilo isso: vim troll.hpp

#include <iostream>
#define troll int
#define peido main
#define haha argc
#define bufa char
#define hehe argv
#define tchau std
#define nada cout
#define vo_fazer ::
#define lixo "Essa é a linguagem Troll!"
#define besteira endl
#define dane_se return
#define maluco 0

E incluir ele no seu source: vim main.cpp

#include "troll.hpp"

troll peido (troll haha, bufa ** hehe) {
  tchau vo_fazer nada << lixo << tchau vo_fazer besteira;
  dane_se maluco;
}

E compilar, vai rodar seu código:

Troll Language

Que loko, né?! Dá pra fazer também usando um única letra, exemplo: #define e int, define ee main, … e assim por diante!


Por hoje é só, são pequenas doses diárias que farão sempre nos manter antenado com o C++ !

Acompanhe o cpp::daily

Deseja aprender C++ e criar seus programas Gráficos e para Terminal com portabilidade para Linux e Windows?

Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:

Acesse o endereço:

https://terminalroot.com.br/cpp/ e saiba mais!



cppdaily cpp


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!