EdgeAligned 83 20 февраля Опубликовано 20 февраля · Жалоба Подведу итог - IDE бывают разные, с разными особенностями и настройками. И если вы пользуетесь кейлом, то не факт, что им будут пользоваться все. Да, и лично я не считаю Кейл хорошей IDE. Про крайней мере, по состоянию на то время, когда я ею пользовался. Быть может, сейчас ченить допилили. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 20 февраля Опубликовано 20 февраля · Жалоба Just now, EdgeAligned said: Подведу итог - IDE бывают разные, с разными особенностями и настройками Вот уж открыли америку! Напомню, речь была изначально была про простое переименование расширения файла. А как и в какой среде это делается - это вторично. Что ж теперь нельзя писать "кейл", чтобы никого не заагрить случайно? К слову, тот же кейл сам меняет ключи компиляции в зависимости от выбранной общей настройки языка файла, компилятор один и тот же, физически вызывается один и тот же файл компилятора *.exe: голый С: -xc -std=c11 --target=arm-arm-none-eabi -mcpu=cortex-m0plus -c -fno-rtti -funsigned-char плюсы: -xc++ -std=c++17 --target=arm-arm-none-eabi -mcpu=cortex-m0plus -c -fno-rtti -funsigned-char -fno-exceptions Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 43 20 февраля Опубликовано 20 февраля (изменено) · Жалоба 1 hour ago, Forger said: что например может не понравится плюсовому компилятору в С исходнике? Будете пользоваться С++, тогда и узнаете. Сейчас-то это зачем? И термин "обратная совместимость" со стороны С++ к С означает то, что если С-программа написана в соответствии с требованиями С++, то она соберётся без ошибок компиляторами обоих языков. А вот если не знать о различиях С и С++ и тупо предложить "плюсАм" собрать переименованную сишную прогу, то компилятор С++ много и смачно выругается об уровне ваших знаний языка. Изменено 20 февраля пользователем tonyk_av Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 20 февраля Опубликовано 20 февраля · Жалоба 18 minutes ago, tonyk_av said: тупо предложить "плюсАм" собрать переименованную сишную прогу, то компилятор С++ много и смачно выругается об уровне ваших знаний языка. вы пробовали это сделать или это просто голословное имхо? и при чем тут МОИ знания языка? 18 minutes ago, tonyk_av said: Будете пользоваться С++, тогда и узнаете. походу вы ошиблись адресатом, я уже много лет пишу исключительно на плюсах и у себя проверил первый попавшийся сторонний с-исходник - компилятор одинаково их понимает в обоих режимах чтобы делать такие утверждения, вы это сделали? видимо нет, но ведькак-то отметиться хочеться, не правда ли? 😉 18 minutes ago, tonyk_av said: если С-программа написана в соответствии с требованиями С++ какая-то отсебятина пошла, уже неинтересно да и вообще пошел отборный оффтоп Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 43 20 февраля Опубликовано 20 февраля · Жалоба 1 hour ago, Forger said: вы пробовали это сделать или это просто голословное имхо? Имею опыт переноса проектов с С на С++. 2 hours ago, Forger said: и при чем тут МОИ знания языка? При том, что звучат такие сентенции: 2 hours ago, Forger said: я уже много лет пишу исключительно на плюсах и у себя проверил первый попавшийся сторонний с-исходник Просто соберите HAL "плюсовым" компилятором, он ведь на С написан. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 20 февраля Опубликовано 20 февраля · Жалоба 1 minute ago, tonyk_av said: Просто соберите HAL "плюсовым" компилятором, он ведь на С написан. Речь изначально шла про компиляцию, а не сборку. Разницу понимаете? 4 minutes ago, tonyk_av said: соберите HAL "плюсовым" компилятором, он ведь на С написан. путаете: компилятор не собирает, он только компилирует файлы, а собирает линкер у меня HAL прекрасно компилируется Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 43 20 февраля Опубликовано 20 февраля · Жалоба 1 hour ago, Forger said: у меня HAL прекрасно компилируется После простого переименования *.c в *.сpp? Да ну. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 20 февраля Опубликовано 20 февраля · Жалоба 17 minutes ago, tonyk_av said: Да ну. да, что логично - компилятор имеет обратную совместимость, что указано "на каждом заборе" на примере компилятора v6.21 от ARM: первый попавшийся файл тупо переименовал и добавил в дерево проекта, он автоматом подцепился как cpp *** Using Compiler 'V6.21', folder: 'C:\Keil\ARM\ARMCLANG\Bin' compiling stm32g0xx_hal.cpp... "C:/Keil/ARM/PACK/Keil/STM32G0xx_DFP/1.4.0/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.cpp" - 0 Error(s), 0 Warning(s). не знаю, какой смысл так делать, ибо у себя такие сторонние файлы ВСЕГДА оставляю как есть, конечно с родным расширением, а уже в своем плюсовом коде использую доступ к функциям из этих чужих файлов через классическую конструкцию: Quote extern "C++" {} не пойму, что у вас там за титанические труды по переводу сишного кода на плюсовый компилятор, но тут ничего не надо делать, видимо набиваете себе цену перед работодателем, но это не мое дело ))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 43 20 февраля Опубликовано 20 февраля · Жалоба 51 minutes ago, Forger said: видимо набиваете себе цену перед работодателем, но это не мое дело ))) Не нужно по себе людей судить. 51 minutes ago, Forger said: не пойму, что у вас там за титанические труды по переводу сишного кода на плюсовый компилято Изначально проект начинался на С. 56 minutes ago, Forger said: да, что логично - компилятор имеет обратную совместимость, что указано "на каждом заборе" В С++ стало возможно инициализировать структуры как в С, например? 56 minutes ago, Forger said: compiling stm32g0xx_hal.cpp... g++ HAL для F4 не компилировал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 75 20 февраля Опубликовано 20 февраля · Жалоба 57 minutes ago, tonyk_av said: В С++ стало возможно инициализировать структуры как в С, например? уже стало, но (since C++20): https://en.cppreference.com/w/cpp/language/aggregate_initialization Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 20 февраля Опубликовано 20 февраля · Жалоба 1 hour ago, tonyk_av said: В С++ стало возможно инициализировать структуры как в С, например? ага, типа раньше было нельзя давайте уже в конце концов ближе к делу - конкретный пример на С, который в плюсах у вас не компилируется, будем вместе разбираться что к чему, а то ходите все вокруг да около ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 20 февраля Опубликовано 20 февраля · Жалоба Все-таки, не все Сишное скомпилится без доработок напильником в C++😉 У меня дежавю, что недавно это уже обсуждалось, видимо, колесо фортуны снова делает свой оборот...)) https://electronix.ru/forum/topic/161540-plavnyy-perehod-c-c-pod-mk/?do=findComment&comment=1752759 https://electronix.ru/forum/topic/161540-plavnyy-perehod-c-c-pod-mk/?do=findComment&comment=1756371 https://electronix.ru/forum/topic/161540-plavnyy-perehod-c-c-pod-mk/?do=findComment&comment=1757683 https://electronix.ru/forum/topic/161540-plavnyy-perehod-c-c-pod-mk/?do=findComment&comment=1758102 - еще вспомнить ошибки компиляции при неявных приведениях enums к int, и вообще 100500 способов невозможных приведений в стиле Си; - в C++ нельзя пользоваться FAM (гибкими массивами) в конце структур; https://electronix.ru/forum/topic/161540-plavnyy-perehod-c-c-pod-mk/?do=findComment&comment=1849899 - приколы с пустой структурой в структуре - будет занимать 1 байт в соответствии со стандартом; - ...и еще 100500 ситуаций, перешедших в разряд UB в плюсах, что было легальным в Си. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 61 20 февраля Опубликовано 20 февраля · Жалоба On 2/20/2024 at 9:37 PM, Forger said: ага, типа раньше было нельзя давайте уже в конце концов ближе к делу - конкретный пример на С, который в плюсах у вас не компилируется, будем вместе разбираться что к чему, а то ходите все вокруг да около ) sizeof('A') И в Си и в С++ скомпилируется, но результат будет разным. On 2/20/2024 at 10:09 PM, Arlleex said: - в C++ нельзя пользоваться FAM (гибкими массивами) в конце структур; Вы про это ? struct{ int a; short b; chat c[]; }; Если да, то я постоянной такое применяю и в С++ тоже. Для всяких протокольных вещей. И компилятор С++ просто предупреждение выдает, но не ошибку. Но код работает при этом исправно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 20 февраля Опубликовано 20 февраля · Жалоба 5 минут назад, dimka76 сказал: И компилятор С++ просто предупреждение выдает, но не ошибку. Но код работает при этом исправно. Потому что то это оставлено в качестве расширения в Вами используемом компиляторе, потому что в C++ FAM-ы не поддерживаются🙂 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 20 февраля Опубликовано 20 февраля · Жалоба 8 minutes ago, dimka76 said: И в Си и в С++ скомпилируется, но результат будет разным. в плюсах выходит sizeof('A') = 1, неужели в С больше? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться