REST API это как раз API через HTTP запросы POST, GET, DELETE
Их можно подобрать через браузер, а можно почитать описание. А бывают еще и библиотеки под конкретный сервер. Собственно по ссылке целые наборы SDK правда для C++ ничего нет. Но хотя бы про формат запросов и ответов можно почитать
MrBman, в C++ появилось много высокоуровневых штук, мешающих нузкоуровневому программированию.
Например, по твоей теме. В C++ можно написать несколько одинаково названных функций с разными типами параметров, но внутри это реализуется путем изменения имени функции. И если в C есть функция foo то извне она будет вызываться так же foo
В C++ будет зависеть от компилятора вот пример из MSDN
int a(char) превратится в ?a@@YAHD@Z , в C это будет просто a
void __stdcall b::c(float) превратится в ?c@b@@AAGXM@Z, в С классов нет но могло бы превратиться в b.c например.
Программы пишутся и без компилятора, хотя бы потому что не все языки компилируемые. Тогда уж надо писать на ассемблере или вообще в машинных командах или байт кодах.
Потому как компиляторы C могут сильно оптимизировать и менять результирующий код
Исходный C очень близок к ассемблеру, там почти нет контроля типов, контроля списка параметров функций.
Т.е. ты как раз можешь сделать функцию foo принимающую любое число параметров любых типов, но как ты их будешь разбирать это твои проблемы. Они просто при вызове положатся в стек.
А чтобы писать компилятор и уж тем более свой язык придумать, надо как раз изучить современные тенденции, чтобы понимать что нужно разработчикам.
Подобные штуки возможны в C++.
Чтобы писать прикладные вещи совсем не обязательно знать как устроен компилятор, к тому же они могут быть устроены по разному.
На начальном этапе, такие знания будут только во вред, начнешь подстраиваться под зависимые от реализации компилятора вещи, код станет не переносимым и потенциально сбойным.
Возможно, для некоторых функций стандартной библиотеки стоит знать их устройство, но и то, не более того что в мане описано.
В описании directions [100] не нужны, и там где дальше использование надо убрать *. К сожалению у меня сейчас под рукой только планшет с андроид. С такими правками компилируется запускается и не крашится.
do_while, ясно. Но так для справки, подобные ошибки могут послужить дырой в безопасности продукта. Если в бэкэнде при обработке запроса утекает память, сервер могут уронить.
В вашем решении, как минимум, не хватает очистки памяти, для лабораторной работы на тему памяти это может стать серьезной ошибкой. В С нет сборки мусора в отличии от js например.
oh_shi, я не про популярность у пользователей, я про форки, притом платные.
Мнение со стороны, конечно, а не изнутри. Если бы вы выбирали на базе чего делать коммерческий продукт, стали бы брать кривую хрень, которую тяжело поддерживать и развивать, думаю вряд ли.
OldDEvvvd, для меня это недавно стало откровением. Просто не задумывался. Но посмотрел пару митингов с продвинутыми ребятами, статьи в блогах, и согласен с ними. Программируя много лет в одной парадигме, формируют образ мышления и подход. В типизированных языках начинают продумывать проект от типов, классов, структур их взаимодействия обработки. В динамических от действий, а данные к ним сами прокладываются.
OldDEvvvd, чему переучиться? Изменить мышление? Это очень сложно.
А изучить другой язык и его окружение конечно можно, и даже зарабатывать на нем деньги. И возможно, даже получится обойтись без глубоких знаний и опыта. Тут многое зависит от проекта и окружения.
Зачем использовать отдельную функцию для выделения памяти?
Ее можно заменить на new int[n] в месте вызова.
У тебя не освобождается выделенная память.
А главное, можно вообще без таких низкоуровневых вещей обойтись. Лучше использовать std:vector он сам освободит память, его размер можно увеличивать когда нужно, а используется он так же как обычный массив.