Pull to refresh

Альтернативные токены и триграфы в С++

Reading time1 min
Views3.5K
Да-да-да, я понимаю, что для того, чтобы знать об альтернативных токенах надо всего лишь заглянуть в пункт 2.5 стандарта. В этом смысле, статья никому не нужна. Еще помню об этом рассказывал тов. Касперски.
Однако, смею предположить, что не совсем все знают, что писать hello world на cpp можно и так:

%:include <stdio.h>
int main()
<%
 char str<:300:> = "hello world";
 puts(str);
 return 0;
%>



Триграфы — вещь чуть более известная (и, имею смелость предположить, что где-то используемая). Давайте выведем на экран что-нибудь жизнеутверждающее и соответствующее ситуации.
??=include <stdio.h>
??=include <cstring>
int main()
??<
 bool bulinkaWantToSleep = 1;
 char str??( ??) = "Amnimal what-what Up4k!??/n ";
 int i =0;
 while((i!=strlen(str))??!??!!(bulinkaWantToSleep)) //
 {
  putchar(str??(i++??));
 }
 return 0;
??>




Замечание: второй пример надо компилять по-особому
g++ -trigraphs main.cpp

Превосходную задачку с использованием триграфа можно почитать тут: habrahabr.ru/blogs/cpp/41584

Удачного всем ненормального программирования! Кстати: буду рад послушать о рациональном использовании ди- и триграфов. Возможно, кодогенерация?
Tags:
Hubs:
Total votes 21: ↑15 and ↓6+9
Comments15

Articles