jenya7 0 23 мая, 2016 Опубликовано 23 мая, 2016 · Жалоба Есть хорошие бесплатные курсы по C++ на https://www.coursera.org/ Лично проходил. Понравилось, что обучают последним версиям языка и очень много дают шаблонного программирования и использования stl. Курс назывался C++ для Си программистов. спасибо. посмотрю. Ну так переименуйте файлы .c в .cpp и делов-то. Вон даже Mentor в своей операционке Nucleus Plus так делать не стесняется. И в Symbian так наверняка было сделано. а если проверят? а там ни класов ни строковых типов. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CrimsonPig 0 23 мая, 2016 Опубликовано 23 мая, 2016 · Жалоба Ну так переименуйте файлы .c в .cpp и делов-то. Вон даже Mentor в своей операционке Nucleus Plus так делать не стесняется. И в Symbian так наверняка было сделано. Кстати, могут возникнуть некоторые забавные глюки от такого переименования.. Может потребоваться тонкая доводка исходников молотком и напильником :) Ну, например, если в С-файле была использована переменная с именем, которое является зарезервированным в С++, ("new", например). Опять же, name mangling появится, что-то там было про разное отношение к one definition rule. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 23 мая, 2016 Опубликовано 23 мая, 2016 · Жалоба а если проверят? а там ни класов ни строковых типов. :) Строковые типы? В embedded? На Cortex-M4 с сотней килобайт RAM-а на борту? Это очень самоуверенно я вам скажу. Хотя если речь про Raspberry PI, то все нормально. Но это чудо теперь и на C# программируется. Я прямо сейчас для него на C# пишу сервер IoT. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Slash 0 23 мая, 2016 Опубликовано 23 мая, 2016 · Жалоба Строковые типы? В embedded? На Cortex-M4 с сотней килобайт RAM-а на борту? Это очень самоуверенно я вам скажу. Если имеется ввиду std::string, то да, лучше не использовать. Но со строками как-то работать надо, поэтому колхозим свой велосипед: #pragma once #include <cstring> #include <string> #include <algorithm> #include <stdio.h> #include <string.h> #include <stdlib.h> namespace mylib{ template <size_t S> struct String { String() { clear(); } String(const char * str) { clear(); copy(str); } size_t size() const { return S; } // количество символов в буфере, исключая терминирующий \0 size_t occupied() const { return std::char_traits<char>::length(buf); } void clear() { std::fill(buf, buf + S, 0); } bool contains(const char * str) const { return std::strstr(buf, str) != NULL; } String<S> & operator=(const char * str) { copy(str); return *this; } char buf[S]; private: // копируем по указателю str символов не более (размер нашей строки - 1). // если копируемая строка меньше (размер нашей строки - 1), остаток добивается \0 void copy(const char * str) { size_t size = std::min(S - 1, std::char_traits<char>::length(str)); std::char_traits<char>::copy(buf, str, size); } }; } Класс добивается своими методами по потребностям. Можно полностью содрать интерфейс с std::string. Если встречу хорошо написанный класс строки, с удовольствием выкину свою поделку :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 23 мая, 2016 Опубликовано 23 мая, 2016 · Жалоба Если имеется ввиду std::string, то да, лучше не использовать. Но со строками как-то работать надо, поэтому колхозим свой велосипед: Класс добивается своими методами по потребностям. Можно полностью содрать интерфейс с std::string. Если встречу хорошо написанный класс строки, с удовольствием выкину свою поделку :) Вы как понимающий знаете что и где колхозить. а что делать начинающему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Slash 0 23 мая, 2016 Опубликовано 23 мая, 2016 · Жалоба Вы как понимающий знаете что и где колхозить. а что делать начинающему? Учиться. Нужны материалы? Просто С++ - любые 3 хорошие книги (читать в фоне). Со спецификой embedded - мне очень понравилась эта книга https://vk.com/wall-112797241_4 Быстрый старт. 1. Начните использовать ссылки. 2. Начните использовать С++ приведения типов reinterpret_cast, static_cast, const_cast. Запретите себе приведение типов в стиле C. 3. Используйте namespace. 4. Используйте перегрузку функций (если надо конечно). 3. Пробуйте проектировать простые классы. Напишите класс светодиода, пусть плохенький (для начала). Это уже объектно-ориентированный анализ и проектирование, есть отдельные книги. Спрашивайте здесь, как написать класс под ту или иную задачу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 23 мая, 2016 Опубликовано 23 мая, 2016 · Жалоба Учиться. Нужны материалы? Просто С++ - любые 3 хорошие книги (читать в фоне). Со спецификой embedded - мне очень понравилась эта книга https://vk.com/wall-112797241_4 Быстрый старт. 1. Начните использовать ссылки. 2. Начните использовать С++ приведения типов reinterpret_cast, static_cast, const_cast. Запретите себе приведение типов в стиле C. 3. Используйте namespace. 4. Используйте перегрузку функций (если надо конечно). 3. Пробуйте проектировать простые классы. Напишите класс светодиода, пусть плохенький (для начала). Это уже объектно-ориентированный анализ и проектирование, есть отдельные книги. Спрашивайте здесь, как написать класс под ту или иную задачу. спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 23 мая, 2016 Опубликовано 23 мая, 2016 · Жалоба которые по дикому желанию заказчика должны быть написаны на С++. что я могу поделать. Жесть. Заказчик требует определенный язык пр-ия... и может отругать за то, что не он использован. :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 24 мая, 2016 Опубликовано 24 мая, 2016 · Жалоба А чего не жабку или пхытон? Не, даже жабоскрипт! Если уж и быть извращенцем, так по полной! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 24 мая, 2016 Опубликовано 24 мая, 2016 (изменено) · Жалоба Жесть. Заказчик требует определенный язык пр-ия... и может отругать за то, что не он использован. :smile3046: что тут удивительного? в военных проектах (да и не только в военных. любой серьезный заказчик.) обычно определяют и язык програмирования и RTOS и среду тестирования и еще много чего. например был авиационный проект там вообще запретили микроконтроллеры. все писали на FPGA. Изменено 24 мая, 2016 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 24 мая, 2016 Опубликовано 24 мая, 2016 · Жалоба что тут удивительного? C++ и embedded — это промежуточный шаг к ардуйне! Хотя, ацефалия нонче в моде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 24 мая, 2016 Опубликовано 24 мая, 2016 · Жалоба Да-да, еще каких-то 20 лет назад продвинутые ассемблерщики так же ругали Си. Некоторые до сих пор ругают. Не знаете плюсов, не умеете их применять в контроллерах - промолчите, не позорьтесь, не мешайте развиваться другим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 20 24 мая, 2016 Опубликовано 24 мая, 2016 (изменено) · Жалоба Если не для себя, а для заказчика, то да, проще всего сделать как советовал AlexandrY - переименовать c в cpp и переработать код, добавив классы. Вроде такой стиль программирования так и называют - "си с классами". Если другие фишки C++ при этом не использовать, то в производительности/ресурсах вроде не потеряете, а некоторые удобства (например, инкапсуляция) добавятся. Изменено 24 мая, 2016 пользователем arhiv6 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 24 мая, 2016 Опубликовано 24 мая, 2016 · Жалоба "С с классами" - так сначала назывался С++. Стоит только переименовать с в срр, как сразу в голову полезут идеи, как этими ++ попользоваться. Сначала немного, дальше больше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 24 мая, 2016 Опубликовано 24 мая, 2016 · Жалоба Если другие фишки C++ при этом не использовать, то в производительности/ресурсах вроде не потеряетеСуществует множество других возможностей плюсов, которые не тянут за собой ни грамма производительности/ресурсов, а исходник (и, как следствие, его написание/сопровождение) упрощают. Но для этого надо хоть немного напрячься в изучении языка, а это горазно сложнее, чем размахивать флагом "плюсы - это раздутый код и тормоза". Но мы то знаем, что за этими заявлениями кроется опыт "настоящих программистов", пишущих на Паскале на любом языке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться