1. Си / Говнокод #15828

    +133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    ...
    int
    (mblen)(const char *s, size_t n)
    {
    	if (s == (const char *)NULL) return 0;	/* no state dependent codings */
    	if (n <= 0) return 0;
    	return (*s != 0);
    }
    ...
     int
    mbtowc(wchar_t *pwc, register const char *s, size_t n)
    {
    	if (s == (const char *)NULL) return 0;
    	if (n <= 0) return 0;
    	if (pwc) *pwc = *s;
    	return (*s != 0);
    }
    ...
     int
    wctomb(char *s, wchar_t wchar)
    {
    	if (!s) return 0;		/* no state dependent codings */
    
    	*s = wchar;
    	return 1;
    }

    THE AMSTERDAM COMPILER KIT V6.0pre4
    ===================================

    © 1987-2005 Vrije Universiteit, Amsterdam
    2010-08-08

    ...

    SUPPORT
    =======

    Languages:

    ANSI C, Pascal, Modula 2. K&R is supported via the ANSI C compiler.



    А где здесь, собсно, ANSI C?

    Запостил: Pythoner, 23 Апреля 2014

    Комментарии (8) RSS

    • Это кодеки только для ascii что ли? Надеюсь там есть для других кодировок? :)
      Ответить
    • ANSI89, очевидно же!
      Ответить
      • эм... ansi89 говорит тупо скопировать с аргумента в результат?
        Ответить
        • Он вроде вообще никаких требований не накладывает (кроме тех что реализованы, т.е. ноль возвращать), все на откуп реализации.
          Ответить
          • То есть, я не могу быть уверен что функции стандартной библиотеки C вернут один и тот же результат, если один и тот же код собран под разными компиляторами и код работает с одними и теми же данными? Странный стандарт, который не стандартизирует, сорь за каламбур, стандартную библиотеку. Больше на саботаж какой то похож.
            Ответить
            • Если юзаешь что-то помеченное в стандарте как implementation defined - да, именно так и будет.

              З.Ы. Тут даже размеры и представления (!) целых чисел implementation defined, а ты о функциях беспокоишься :3
              Ответить
            • Судя по википедии эту часть (насчет многобайтных символов) поправили в С95, но что именно правили не знаю. То что вернут функции зависит от текущей локали - как минимум поддерживается однобайтная (которую мы и видем вверху), а на каких-нибудь контроллерах очевидно только она и будет поддерживаться.
              Ответить

    Добавить комментарий