LINUX.ORG.RU

Подскажите как писать код на C

 , ,


2

4

У меня есть несколько проблем, из-за которых я не знаю как можно создать свой проект.

  • Как мне использовать key-value структуру данных? В других языках используется библиотека (Java) или встроенная реализация (Go). А что используют в проектах, написанных на C?
  • Как в проектах на C узнают длину массива, переданного как аргумент? Я знаю, что массивы передаются как указатели, а указать длину данных за указателем - невозможно. Нужно всегда передавать длину как аргумент? Я также понимаю, что можно создавать свои структуры, состоящие из указателя и длины, но как это грамотно сделать, чтобы потом не запутаться в типах и бойлерплейте? Возможно, есть нормальная практика, которой все следуют?
  • Единственный способ иметь в структуре несколько массивов - использовать указатели. Значит, память нужно выделять и очищать вручную. Значит, для работы с такими структурами нужно иметь функции-обёртки. Так все делают для создания нескольких массивов в структуре?


Последнее исправление: elonmusk (всего исправлений: 3)

Ответ на: комментарий от i-rinat

Ты наверняка в курсе, что переспорить его не получится?

Никто вроде и не собирался спорить %) Я не думаю что он специально.

Deleted
()
Ответ на: комментарий от anonymous

Это там, где можно строки умножать на числа, как в питона?
И тебе не нравится, что можно к указателям прибавлять или отнимать числа?

Определитесь уже.

RazrFalcon ★★★★★
()
Ответ на: комментарий от i-rinat

Ты наверняка в курсе, что переспорить его не получится?

Почему же так категорично? Мы же о унылом вбросе говорим, а не о конкретике.

RazrFalcon ★★★★★
()
Ответ на: комментарий от anonymous

Микроконтроллеры

Нет конечно. Плюсовый шаблонный код компилируется в гораздо более компактное представление, не говоря даже об удобстве, скорости и безопасности программировании.

модули ядра Linux

Только на плюсах и писали бы, бы был шанс пропихнуть это в майнлайн. А так не забывайте благодарить C на каждую уязвимость в ядре.

opencl-кернелы(хотя это не совсем Си)

Ха-ха, вообще-то там плюсы.

и т.п.

Пока всё мимо.

slovazap ★★★★★
()
Ответ на: комментарий от InterVi

Объективно C пока что незаменим для низкоуровневых вещей, особенно для микроконтроллеров

На C под микроконтроллеры пишут только дедани которые последние 10 лет ничего нового не учили, и нахрен не нужные бизнесу и даже кустарщине. По умолчанию пишут как раз на плюсах и да, Rust подтягивается.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Видал многих кодеров, которые пишут именно на C и он же в большинстве вакансий. А вот раст или плюсы не попадались ни разу. Ты не прав.

InterVi ★★★★
()
Ответ на: комментарий от InterVi

Ну во-первых, не надо мешать rust и c++ в одну кучу. Во-вторых, никаких вакансий ты конечно же не смотрел и кодеров видел только на картинке, так что не надо против моей правоты ставить свои фантазии и некомпетентность.

slovazap ★★★★★
()
Ответ на: комментарий от Deleted

Структурой с двумя строками.

Я думаю имелось в виду наличие либ для дерева или хэш-таблицы.

Dudraug ★★★★★
()
Ответ на: комментарий от slovazap

Тогда давай пруфы. По C/C++ (именно так, а не чистый C++) есть, по Rust на микроконтроллеры нету вообще нифига. Да и просто растовых вакансий кот наплакал.

То, что горстка уже работающих фанатиков использовала его в новом проекте - не показатель. Хотя даже таких историй ничтожно мало. Плохо у Rust с популярностью в коммерции.

InterVi ★★★★
()
Ответ на: комментарий от slovazap

Раст и плюсы в IoT? Ну а хотя там везде андроид сейчас, чего удивляться. Тогда почему про джаву не говорите? Или она не используется в электронике на андроиде? Ну да, наверное, там Qt, да?

linuxnewbie
()
Ответ на: комментарий от slovazap

Какой же ты поехавший, как ты смог набрать 5 звезд и не улететь в бан? Загадка.

Deleted
()
Ответ на: комментарий от linuxnewbie

Формально и JavaScript есть, эти игрушки в свободной продаже. Только вот почему-то кроме как для развлечения их не применяют.

InterVi ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.