[uquote="Reflector",url="/forum/viewtopic.php?p=4169079#p4169079"]
Добавлено after 2 hours 32 minutes 34 seconds:
Нет, взяли С++, пишем как на С++, но ошибки проверяем как на С.[/uquote]
Читайте внимательней:
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4168399#p4168399"]большинством именно функциональных преимуществ воспользоваться не могу.[/uquote]
Даже элементарный pipeline не сделать. Сваливаемся на процедурный код с объектного.
Reflector писал(а):From_chars() там быть никак не может, т.к. она возвращает результат по ссылке
Странно, а в стандарте написано не так: "returns a value of type from_chars_result", где
Код: Выделить всё
struct from_chars_result {
const char* ptr;
std::errc ec;
};
Кто мешает в C функции так же возвращать структуру?
Если же речь про параметр value, то в упор не понимаю, в чем тут разница между передачей указателя по значению в С и передачей ссылки в С++, которая в скомпилированном коде так же будет передаваться по значению адреса (того же значения указателя) в ней содержащегося.
Другое дело, что при жестких требованиях к производительности и памяти, не возникает никакого желания тащить такого монстра, как from_chars, себе в код. Например, зачем мне куча кода для парсинга чисел по основанию 36, если мне нужен парсинг только целых десятичных чисел? Как
это не компилируй, но ворох лишнего кода всегда прибежит.
Reflector писал(а):К счастью это легко проверить, поднимите руке те, кто пишет на С, а не С++, из-за поддержки стандартизированного ABI

Было бы смешно, если не было бы так грустно. Для примера, в MS SQL, PostgreSQL или Oracle подключить скомпилированное расширение в виде so/dll - элементарно, причем динамически без остановки сервиса. Потому что они написаны на C и ABI стандартизирован. А вот к Clickhouse - только с полной перекомпиляцией всего Clickhouse и рестартом сервиса, так как он написан на C++, а ABI в C++ меняется даже от версии к версии одного компилятора, не говоря уже о разных.
Тоже самое можно сказать и про ESP32, и про старшие МК на ARM, где расширения могут быть востребованы. а полная рекомпиляция или не желательна, или даже невозможна, так как все исходники недоступны.
Reflector писал(а):ПростоНуб писал(а):Во-вторых, простота позволяет писать более надежный код.
Какая связь простого из-за небольшого для изучения размера языка с надежным кодом?
Речь не о простоте для изучения (не думаю, что к C это относится, так же, как, для примера, к Lisp). А о простоте синтакиса. Читайте внимательней:
ПростоНуб писал(а):Процитирую Линуса Торвальдса: "One of the absolute worst features of C++ is how it makes a lot of things so context-dependent - which just means that when you look at the code, a local view simply seldom gives enough context to know what is going on."