Easyelectronics.ru

Электроника для всех
Текущее время: 11 апр 2021, 09:24

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
 Заголовок сообщения: Передача ссылки в функцию
СообщениеДобавлено: 25 ноя 2020, 17:09 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 102
Вот пример простой того что я хочу получить
Код:
#include <iostream>

void addOne(int &x) // x - это переменная-ссылка, в CodeBlocks это работает, а в STM32CubeIDE ошибка синтаксиса
{
    x = x + 1;
}

int main()
{
    int a = 7;
    std::cout << "a = " << a << '\n';
    addOne(a);
    std::cout << "a = " << a << '\n';
    return 0;
}


в CodeBlocks компилится и корректно работает, но когда в программе в STM32CubeIDE пытаюсь сделать передачу ссылки в функцию, то в строке объявления функции получаю ошибку синтаксиса. Может кто мыслишку подкинет ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 25 ноя 2020, 17:24 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1447
Ошибка какая? Этот файл точно как С++ компилируется?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 25 ноя 2020, 17:43 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3908
Откуда: Китай, Пекин
функция не ссылку ждёт, она ждёт референс.

почитайте что такое Pointers vs References in C++
и да выше сказали правильно, Си - такое не понимает
убедитесь что компилятору исходник передан как исходник на С++

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 25 ноя 2020, 17:59 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1447
cheblin писал(а):
функция не ссылку ждёт, она ждёт референс.

И как же reference на русский переводится, если не "ссылка"? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 25 ноя 2020, 18:02 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 102
а разве в Си нельзя передавать ссылку в функцию ?

Сейчас посмотрел, оказывается в STM32CubeIDE проект действительно Си а не С++

cheblin, простите, случайно отправил вам этот вопрос в личку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 25 ноя 2020, 18:03 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1447
Seyran писал(а):
а разве в Си нельзя передавать ссылку в функцию ?

В Си вообще нет ссылок, там придется передавать указатель.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 25 ноя 2020, 18:15 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3908
Откуда: Китай, Пекин
пойнтеры
референсы - это правильно

указатели
ссылки - это кто-во-что-горазд


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

а если не в состоянии так - сделай кальку с оригинального языка....и пользуйся, так нет... такие прям самобытные,

прям как китайцы

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 25 ноя 2020, 18:55 
Старожил

Зарегистрирован: 15 ноя 2015, 12:11
Сообщения: 201
cheblin писал(а):
указатели
ссылки - это кто-во-что-горазд


На самом деле давным давно устоявшаяся терминология. Была путаница, когда ссылками перевели pointers в первых русскоязычных изданиях забугорных букварей по С, но быстро исправились. Года с 92-го не припомню, чтобы кто-то в профессиональной среде путал эти два термина. Разве что начинающий где-то откопает тот самый первый перевод букваря.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 27 ноя 2020, 09:27 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 102
так все таки как в Си это сделать ?

Цитата:
На самом деле давным давно устоявшаяся терминология. Была путаница, когда ссылками перевели pointers в первых русскоязычных изданиях забугорных букварей по С, но быстро исправились. Года с 92-го не припомню, чтобы кто-то в профессиональной среде путал эти два термина. Разве что начинающий где-то откопает тот самый первый перевод букваря.


Путаница началась из-за меня, я просто изначально не увидел что проект на Си, а не на плюсах ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 27 ноя 2020, 09:46 
Старожил

Зарегистрирован: 25 сен 2017, 10:57
Сообщения: 246
Откуда: Украина
Так
Код:
void addOne(int *x) // x - это переменная-ссылка, в CodeBlocks это работает, а в STM32CubeIDE ошибка синтаксиса
{
    *x = *x + 1;
}

int main()
{
    int a = 7;
    std::cout << "a = " << a << '\n';
    addOne(&a);
    std::cout << "a = " << a << '\n';
    return 0;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 27 ноя 2020, 11:50 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 102
Не то что то. В CodeBlock ошибка при выполнении, CubeIde просто вылетает при компиляции

Цитата:
Process terminated with status -1073741510 (0 minute(s), 10 second(s))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 27 ноя 2020, 12:12 
Старожил

Зарегистрирован: 25 сен 2017, 10:57
Сообщения: 246
Откуда: Украина
А так в CubeIde:
Код:
int main()
{
    int a = 7;
    printf("\n a = %d", a);
    addOne(&a);
    printf("\n a = %d", a);
    return 0;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 27 ноя 2020, 14:18 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 102
ну совсем то из меня нуба не делайте, уж std::cout на printf я догадался поменять )))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 27 ноя 2020, 14:25 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1447
А куда ты в конце из main() выходишь?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 27 ноя 2020, 15:26 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 102
после main() завершение работы программы, я так подозреваю почему программа крашится, это из-за того что не доступна область памяти в которую запись производиться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 27 ноя 2020, 15:41 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1447
Seyran писал(а):
после main() завершение работы программы

Это не ПК, в лучшем случае после вызова main() будет бесконечный цикл, а может вообще ничего не быть и программа будет продолжать выполняться...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача ссылки в функцию
СообщениеДобавлено: 27 ноя 2020, 16:24 
Старожил

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 241
cheblin писал(а):
пойнтеры
референсы - это правильно

указатели
ссылки - это кто-во-что-горазд


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

а если не в состоянии так - сделай кальку с оригинального языка....и пользуйся, так нет... такие прям самобытные,

прям как китайцы

гы гы... то вы ещё в украинском ВУЗе не работали :)))))) (sorry за offtop)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB