когда то давно начал один проект на Pure C когда он стал определенного размера стал испытывать большие проблемы с статическими массивами в основном из за проблемы обработки строк пришлось написать отдельный модуль динамических строк и внедрить в проект сейчас новые интерфейсы принимают специальный тип строк и работать стало намного легче пусть и в ущерб производительности да и старые интерфейсы которые принимают строковые данные переделываю а чего Вам не хватает в C ?
Когда в 85 году умный человек по кличке Страус-труп понял, что ему чего-то не хватает в языке С, он создал язык С++. И это уже содержит в себе ответ на вопрос "чего вам не хватает в С".
да страус-труп видно терпел терпел и решил добавить новые конструкции в язык и расширить стандартную библиотеку
теперь я понимаю почему многие настоятельно советовали использовать std::string вместо char * чем больше проект тем неудобней с char * работать а std::string безусловно вещь жаль что ее нет в С приходится изобретать велосипеды и внедрять в проект по ходу да и не стандартизировано это у каждого С проекта свои динамические строки соответственно сопровождать кому то если придется то ему можно только посочувствовать а тут к std::string все привыкли везде он одинаковый интуитивно все
C был задуман как минималистичный, очень гибкий (с минимальными ограничениями) язык высокого уровня (те не привязанный к конкретному процессору или машине), позволяющий писать максимально компактные и быстрые программы. в то время писалось - "всего на 15% хуже ассемблерных" весь основной функционал в нем был вынесен в библиотеки. надстроек над С счас более чем. до 1/3 современных языков == расширения С. С++ только одно из них. если ваша задача сейчас - в основном обработка строк, возможно вам стоит взглянуть на нечто более специализированое? тотже перл был придуман именно, в основном, для обработки строк. он, кстати, тоже расширение С.
Когда с этой проблемой столкнулись парни из microsoft, они придумали такие штуки как UNICODE_STRING и BSTR. *Символы ,.:; - неотъемлемая часть не только языка С, но и русского, если чё.
Если столь вольно трактовать термин "расширение языка", то придется признать все современные императивные языки расширениями Алгола-60.
Расширение, которого мне не хватает во всех без исключения языках программирования - чтобы они стали, наконец нормально поддерживать любые языки в именах переменных, функций и т.п. Я хочу писать свои функции на родном языке, а не на всяких волапюках!
RedLord А тебе так принципиально важно, какие крокозяблики копипастить в свой цодес из таблицы экспорта? Точно так же, как нонче читает их на латыни. То есть "Цопы-Пасте" и всё чики-поки.
Тогда тебе в 1С. Остальным это нафиг не нужно (да, я интересовался, что думают по этому поводу другие). Во-вторых, стандарт С++ не возражает против того, чтобы компиляторы поддерживали любые языки в именах переменных\функций. В частности, это реализовано в MSVC начиная где-то с 8.0 .
Чего вам нехватает в асме ? Про совместимость не упоминайте - код изолирован для всех реживом(V86, x64 etc.) в зависимости от опций сборки, винь не линус. Переносимость на различные контроллеры просто смешно.
Чего вам не хвататет в чёрном хлебе? Про витамины и аминокислоты не упоминайте - чёрный хлеб содержит их в достаточном количестве. Почему бы вам не питаться одним чёрным хлебом?
Ursus Твоих остальных меньше, чем моих. Ты китайцев забыл спросить. И ещё он не возражает против мира во всём мире, нудистских пляжей и переговоров с инопланетянами. Но и не обязывает к этому. Вот когда обяжет - тогда и можно говорить о поддержке. А до тех пор игры с самопальными расширениями языка, которые никого ни к чему не обязывают, обычно кончаются плохо.
Clerk Вы как всегда за своё. Не можете признать, что асм не портируем никак и никуда. Какую изоляцию вы имеете ввиду, sand box? Смешно. Количество асма нужно максимально минимизировать.
Что значит «не обязывает»? Поддержка universal-character-name (\u и \U) в идентификаторах является нормативным требованием стандарта C99 (ISO/IEC 9899:TC3). Если к тому же компилятор/среда позволяет использовать UTF-8/16/etc. для человеческого представления этих самых universal-character-name (вот это как раз implementation-defined) — радоваться надо.
Booster Перенеси какуюнибудь IoConnectInterrupt() на линус или другое железо, например контроллер какой, я про это говорю. Мне ваше портирование и нафиг не нужно.