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
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 |
---|---|
{ | ??< |
} | ??> |
[ | ??( |
] | ??) |
# | ??= |
\ | ??/ |
^ | ??’ |
| | ??! |
~ | ??- |
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:
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++ !
Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:
Acesse o endereço: