Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Триграфы в C/C++ (https://forum.antichat.xyz/showthread.php?t=42659)

_Great_ 19.06.2007 22:50

Триграфы это специальные тройки символов вида ??x, которые заменяют некоторые спецсимволы
Не помню кто мне кидал примерчик:

Код:

int i;
// cколько раз выведется hi в stdout??/
for( i=0; i<10; i++ )
  printf("hi\n");

на самом деле ??/ означает символ \ поэтому цикл for попадает в продолжение комментария и hi выведется один раз.

Другой пример:
??=define HELLO аналогично #define HELLO (??= заменяется на #)

Great: тема выделилась из "[c/c++] Новичкам: задаем вопросы"

tcl 19.06.2007 23:00

в этом примере цикл не попадает в комментарии

nerezus 19.06.2007 23:26

Цитата:

Не помню кто мне кидал примерчик:
А я помню ))

P.s. кто юзает триграфы - тот говнюк.

_Great_ 19.06.2007 23:35

Цитата:

Сообщение от tcl
в этом примере цикл не попадает в комментарии

Скомпилируй

scrat 20.06.2007 01:18

Цитата:

Сообщение от _Great_
Скомпилируй

Код:

scrat@scrat:~$ gcc -o omg omg.c
omg.c:5:56: warning: trigraph ??/ ignored, use -trigraphs to enable
scrat@scrat:~$ ./omg
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
scrat@scrat:~$ gcc -trigraphs -o omg omg.c
scrat@scrat:~$ ./omg
hi

:D

tcl 20.06.2007 01:28

смотри :)
http://img519.imageshack.us/img519/6930/53716150sa9.jpg

A110ut 20.06.2007 01:41

просто кроме Ms Vc++ существуют и другие компиляторы =\

nerezus 20.06.2007 08:39

Цитата:

http://img519.imageshack.us/img519/6930/53716150sa9.jpg
выкинь этот компилер.

_Great_ 20.06.2007 10:31

scrat, gcc выдает ворнинг, все правильно.
tcl, че это за чудо природы?
nerezus, +1

tcl 20.06.2007 11:27

gcc тоже выкинуть?

nerezus 20.06.2007 11:33

Цитата:

gcc тоже выкинуть?
Зачем? gcc про триграфы знает.

Prod 20.06.2007 11:57

Если вдруг кому понадобяться:

Код:

Диграфы:

<%        {
%>        }
<:        [
:>        ]
%:        #
%:%:      ##

Триграфы:

??=        #
??(        [
??<        {
??/        \
??)        ]
??>        }
??'        ^
??!        |
??-        ~
???        ?


tcl 20.06.2007 12:00

а с диаграфами ещё больше компиляторов не работают и что теперь, выкинуть их всех?

scrat 20.06.2007 12:42

Цитата:

Сообщение от _Great_
scrat, gcc выдает ворнинг, все правильно.
tcl, че это за чудо природы?
nerezus, +1

всё зависит от способа компеляции.но если учитывать триграф то цикл попадает в комментарий и _Great_ прав.
dmc это компилер c и c++ от Digital Mars по ходу компилер реал корявый!

_Great_ 20.06.2007 12:48

Не все компиляторы соблюдают стандарт и практически у всех (если, вообще не у всех) компиляторов есть свои косяки.
Msvc в принципе далек от слова "стандарт", однако триграфы он понимает :)

nerezus 20.06.2007 13:00

Цитата:

Digital Mars
У них раньше была таблица сравнения их языка D с существующими.
После прочтения решил никогда не юзать язык D, т.к. такой брехни, как в таблице, никогда не видел.

tcl 20.06.2007 13:19

Эта таблица которая сравнивала D и С и яву? Которая была на ксакепе? :) (и которой не было на официальном сайте)
PS http://img518.imageshack.us/img518/6048/57665526nb5.jpg
PPS я думаю вы с грейтом знаете, для чего на самом деле нужны триграфы. На*** тогда писать про вещи, вероятность встречи с которыми практически равна нулю? Конечно только если вы не участвуете в соревнованиях типа "кто напишет самый нечитабельный код"

_Great_ 20.06.2007 13:22

Цитата:

pps я думаю вы с грейтом знаете, для чего на самом деле нужны триграфы. На*** тогда писать про вещи, вероятность встречи с которыми практически равна нулю?
Чувак спросил что это такое ) А так.. я смысла в них не вижу. Только чтобы оставлять намеренные "ошибки" в коде сплоитов например (защита)

tcl 20.06.2007 13:26

на самом деле они были нужны на древних терминалах, где не хватало нужных символов.

_Great_ 20.06.2007 13:29

Ну а сейчас необходимость уже отпала.

Ладно, закрываю тему. Обсудили и хватит) Что это, зачем нужно и с чем его едят.


Время: 15:17