Именованный COMMON блок

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Парни, в этом языке есть конструкция аналогичная именованному COMMON блоку?

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

Ворота пишет:

Парни, в этом языке есть конструкция аналогичная именованному COMMON блоку?

в каком языке?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

В том диалекте С++, что используется в Adruino IDE (или в GCC, если так правильнее).

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

GCC это не диалект а собственно стандарт С++,  а не фортрана. Поэтому присоединяюсь к вопросу Клапауция.

Пока не видел фортрана для Ардуинки. В нем, вероятно, Вы найдете нужное.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Да, в фортране понятно, что есть, вопрос у меня, есть ли в С++ аналог такого понятия?

А что до фортрана, то в проекте GCC была идея поддерживать фортран, Кобол и Аду, только не знаю реализовано или только разговоры.

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

в Си есть глобальные переменные - они видны во всех функциях.

Если ты что-то иное хочешь, чтобы, например, переменные разного типа друг на друга ложились в одну память, Два инта - как лонг или как 4-ре char. То для этого есть union.

Вначале изложи свои хотелки, Возможно, что люди подскажут тебе более соответствующее направление "куда копать".

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Так, вроде ж изложил. Нужен именованный блок, т.е. возможность сделать какие-то переменные видимыми из некоторой пачки функций и невидимыми не из каких других. Глобальные переменные - это аналог неименованного блока, а нужно именно "глобальную переменную, но не для всех функций, а только для "избранных"".

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Я чем-то заслужил такую лексику по отношению к себе? Что-то не так сделел или сказал?

Или ты со всеми незнакомыми людьми так разговариваешь? Физическое лицо успевает заживать или постоянно разбито?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

в разных файлах их держите просто. Глобалы одного файла доступны из другого, только если их явно объявить через external. 

Или используйте средства С++ там есть дружественные классы. Просто прочтите про них в гугле, там есть тонкости, но в части использования имен переменных - никаких особых нет.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Ворота пишет:

Я чем-то заслужил такую лексику по отношению к себе? Что-то не так сделел или сказал?

И вот тут - не надо так. Человек, к которому Вы обратились за помощью - по определению сильно умнее Вас. Он имеет право отвечать Вам так, как ему нравитсья. Не устраивает - можете искать помощь в ином месте.

Я не матерюсь, не потому, что "внутренне интеллигентен"  (фу! слово-то какое!);), а потому, что еще утро/день и я пока трезвый.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ворота пишет:

COMMON блоку?

Хрена-се! У нас появляются настоящие программисты! :)

Ворота пишет:

в этом языке есть конструкция аналогичная ...

А то!

Вот здесь ближе к концу есть "Приложение для параноиков", там всё описано и пример кода есть.

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ЕвгенийП пишет:

А то!

Вот здесь ближе к концу есть "Приложение для параноиков", там всё описано и пример кода есть.

Ну вот и "главный по тарелочкам", в смысле по С++. И в его примере как-раз дружественные классы.

------

Но, перефразируя Клапауция без мата, покажите, что Вы изобретаете? Мы настолько больше знаем в предмете, что спасем от изобретения велосипеда из говна и палок.... пусть хоть будет на соплях и из трубочек!

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

wdrakula пишет:

И вот тут - не надо так ... имеет право

Да нет уж, вот тут не надо. Человек может быть трижды умнее или глупее, но если в ответ на своё обращение незнакомец услышал площадную брань, то такой умник имеет право получить по физическому лицу (если в реале) или (если в сети) быть игнорируемым и презираемым, как последнее быдло, коим он на самом деле и является, пруф - см его пост.

Надеюсь, признавая право этого подонка материть меня, Вы также признаёте моё право бить его по морде и называть подонком? Если нет, то у Вас какое-то странное понятие о правах.

Вам и Евгению, спасибо. Я кстати, видел ту тему, забыл просто. Спасибо.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Изобретается игра в которой программы борются за ресурсы. Программисты пишут свои куски не видя кусков друг друга, потому глобальные переменные могут пересечься. Можно, конечно. Проще - дать каждому свой префикс для имён (наверное, так и сделаем), но пока исследуются все варианты.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Клапауций 823 пишет:
физическая его реализация невозможна.?

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Боюсь, AVR очень плохо подходит для таких игр. Вспомните (или изучите) классику - Core Wars, там главный боевой приём - записать в тело программы-противника свой код (в простейшем случае неисполняемую инструкцию, а в более хитрых, сделать его "своим"). Здесь игроки лишены этого приёма в силу архитектуры данной машины. И, я вот пока не могу понять, каким же образом одна программа будет "мочить" другую? 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Собственно, мне кажется, что структуры о объединения Си на 100% покрывают возможности COMMON блока.

Ну, естественно, с правильным распределением функций по файлам. Без этого - никуда: концепция Фортрана подразумевает, что  какждая единица компиляции эквивалентна отдельному файлу. Т.е. Фортран-программу можно просто командой ОС copy свалить в один файл, причем, в произвольном порядке, и это никак не отразится на работоспособности. В Си такого нет, поэтому правильное распределение функций по файлам при составлении на Си аналога Фортран-программы является следствием структуры языка (Фортрана), а не его отдельного элемента (COMMON блока).

И, кстати, COMMON блок считается устаревшей конструкцией и реклмендуется к замене на module.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:

И, кстати, COMMON блок считается устаревшей конструкцией и реклмендуется к замене на module.

Многие пытались испортить Фортран, и while туда добавляли, и прочее, но он пока держится к радости настоящих программистов :)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ЕвгенийП пишет:

Многие пытались испортить Фортран, и while туда добавляли, и прочее, но он пока держится к радости настоящих программистов :)

Скажу честно, навскидку синтаксис фортранного while я не напишу. Да и select case каждый раз сверяю с документацией. Но все COMMON заменил на module. И веткой else в if пользуюсь с удовольствием.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А в фортране с удовольствием пользовались бы арифметическим IF - такого крутяка нигде больше нет :)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Да, в некоторых случаях очень удобная конструкция.