Триграфы в C/C++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 19 Jun 2007.

Thread Status:
Not open for further replies.
  1. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Триграфы это специальные тройки символов вида ??x, которые заменяют некоторые спецсимволы
    Не помню кто мне кидал примерчик:

    Code:
    int i;
    // cколько раз выведется hi в stdout??/
    for( i=0; i<10; i++ )
      printf("hi\n");
    на самом деле ??/ означает символ \ поэтому цикл for попадает в продолжение комментария и hi выведется один раз.

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

    Great: тема выделилась из "[c/c++] Новичкам: задаем вопросы"
     
    #1 _Great_, 19 Jun 2007
    Last edited: 20 Jun 2007
    1 person likes this.
  2. tcl

    tcl Banned

    Joined:
    17 Jun 2007
    Messages:
    35
    Likes Received:
    49
    Reputations:
    40
    в этом примере цикл не попадает в комментарии
     
  3. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    А я помню ))

    P.s. кто юзает триграфы - тот говнюк.
     
    1 person likes this.
  4. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Скомпилируй
     
  5. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    Code:
    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
     
  6. tcl

    tcl Banned

    Joined:
    17 Jun 2007
    Messages:
    35
    Likes Received:
    49
    Reputations:
    40
    смотри :)
    http://img519.imageshack.us/img519/6930/53716150sa9.jpg
     
    1 person likes this.
  7. A110ut

    A110ut Elder - Старейшина

    Joined:
    31 Dec 2005
    Messages:
    505
    Likes Received:
    263
    Reputations:
    92
    просто кроме Ms Vc++ существуют и другие компиляторы =\
     
  8. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    выкинь этот компилер.
     
  9. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    scrat, gcc выдает ворнинг, все правильно.
    tcl, че это за чудо природы?
    nerezus, +1
     
  10. tcl

    tcl Banned

    Joined:
    17 Jun 2007
    Messages:
    35
    Likes Received:
    49
    Reputations:
    40
    gcc тоже выкинуть?
     
  11. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    Зачем? gcc про триграфы знает.
     
  12. Prod

    Prod Elder - Старейшина

    Joined:
    10 Dec 2006
    Messages:
    121
    Likes Received:
    44
    Reputations:
    3
    Если вдруг кому понадобяться:

    Code:
    [B]Диграфы:[/B]
    
    <%        {
    %>        }
    <:        [
    :>        ]
    %:        #
    %:%:      ##
    
    [B]Триграфы:[/B]
    
    ??=         #
    ??(         [
    ??<         {
    ??/         \
    ??)         ]
    ??>         }
    ??'         ^
    ??!         |
    ??-         ~
    ???         ?
     
    #12 Prod, 20 Jun 2007
    Last edited: 20 Jun 2007
    2 people like this.
  13. tcl

    tcl Banned

    Joined:
    17 Jun 2007
    Messages:
    35
    Likes Received:
    49
    Reputations:
    40
    а с диаграфами ещё больше компиляторов не работают и что теперь, выкинуть их всех?
     
    1 person likes this.
  14. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    всё зависит от способа компеляции.но если учитывать триграф то цикл попадает в комментарий и _Great_ прав.
    dmc это компилер c и c++ от Digital Mars по ходу компилер реал корявый!
     
  15. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Не все компиляторы соблюдают стандарт и практически у всех (если, вообще не у всех) компиляторов есть свои косяки.
    Msvc в принципе далек от слова "стандарт", однако триграфы он понимает :)
     
  16. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    У них раньше была таблица сравнения их языка D с существующими.
    После прочтения решил никогда не юзать язык D, т.к. такой брехни, как в таблице, никогда не видел.
     
  17. tcl

    tcl Banned

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

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Чувак спросил что это такое ) А так.. я смысла в них не вижу. Только чтобы оставлять намеренные "ошибки" в коде сплоитов например (защита)
     
  19. tcl

    tcl Banned

    Joined:
    17 Jun 2007
    Messages:
    35
    Likes Received:
    49
    Reputations:
    40
    на самом деле они были нужны на древних терминалах, где не хватало нужных символов.
     
    1 person likes this.
  20. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Ну а сейчас необходимость уже отпала.

    Ладно, закрываю тему. Обсудили и хватит) Что это, зачем нужно и с чем его едят.
     
    1 person likes this.
Thread Status:
Not open for further replies.