Именованный COMMON блок
- Войдите на сайт для отправки комментариев
Ср, 01/02/2017 - 14:53
Парни, в этом языке есть конструкция аналогичная именованному COMMON блоку?
Парни, в этом языке есть конструкция аналогичная именованному COMMON блоку?
Парни, в этом языке есть конструкция аналогичная именованному COMMON блоку?
в каком языке?
В том диалекте С++, что используется в Adruino IDE (или в GCC, если так правильнее).
GCC это не диалект а собственно стандарт С++, а не фортрана. Поэтому присоединяюсь к вопросу Клапауция.
Пока не видел фортрана для Ардуинки. В нем, вероятно, Вы найдете нужное.
Да, в фортране понятно, что есть, вопрос у меня, есть ли в С++ аналог такого понятия?
А что до фортрана, то в проекте GCC была идея поддерживать фортран, Кобол и Аду, только не знаю реализовано или только разговоры.
в Си есть глобальные переменные - они видны во всех функциях.
Если ты что-то иное хочешь, чтобы, например, переменные разного типа друг на друга ложились в одну память, Два инта - как лонг или как 4-ре char. То для этого есть union.
Вначале изложи свои хотелки, Возможно, что люди подскажут тебе более соответствующее направление "куда копать".
Так, вроде ж изложил. Нужен именованный блок, т.е. возможность сделать какие-то переменные видимыми из некоторой пачки функций и невидимыми не из каких других. Глобальные переменные - это аналог неименованного блока, а нужно именно "глобальную переменную, но не для всех функций, а только для "избранных"".
Я чем-то заслужил такую лексику по отношению к себе? Что-то не так сделел или сказал?
Или ты со всеми незнакомыми людьми так разговариваешь? Физическое лицо успевает заживать или постоянно разбито?
в разных файлах их держите просто. Глобалы одного файла доступны из другого, только если их явно объявить через external.
Или используйте средства С++ там есть дружественные классы. Просто прочтите про них в гугле, там есть тонкости, но в части использования имен переменных - никаких особых нет.
Я чем-то заслужил такую лексику по отношению к себе? Что-то не так сделел или сказал?
И вот тут - не надо так. Человек, к которому Вы обратились за помощью - по определению сильно умнее Вас. Он имеет право отвечать Вам так, как ему нравитсья. Не устраивает - можете искать помощь в ином месте.
Я не матерюсь, не потому, что "внутренне интеллигентен" (фу! слово-то какое!);), а потому, что еще утро/день и я пока трезвый.
COMMON блоку?
Хрена-се! У нас появляются настоящие программисты! :)
в этом языке есть конструкция аналогичная ...
А то!
Вот здесь ближе к концу есть "Приложение для параноиков", там всё описано и пример кода есть.
Вот здесь ближе к концу есть "Приложение для параноиков", там всё описано и пример кода есть.
Ну вот и "главный по тарелочкам", в смысле по С++. И в его примере как-раз дружественные классы.
------
Но, перефразируя Клапауция без мата, покажите, что Вы изобретаете? Мы настолько больше знаем в предмете, что спасем от изобретения велосипеда из говна и палок.... пусть хоть будет на соплях и из трубочек!
И вот тут - не надо так ... имеет право
Да нет уж, вот тут не надо. Человек может быть трижды умнее или глупее, но если в ответ на своё обращение незнакомец услышал площадную брань, то такой умник имеет право получить по физическому лицу (если в реале) или (если в сети) быть игнорируемым и презираемым, как последнее быдло, коим он на самом деле и является, пруф - см его пост.
Надеюсь, признавая право этого подонка материть меня, Вы также признаёте моё право бить его по морде и называть подонком? Если нет, то у Вас какое-то странное понятие о правах.
Вам и Евгению, спасибо. Я кстати, видел ту тему, забыл просто. Спасибо.
Изобретается игра в которой программы борются за ресурсы. Программисты пишут свои куски не видя кусков друг друга, потому глобальные переменные могут пересечься. Можно, конечно. Проще - дать каждому свой префикс для имён (наверное, так и сделаем), но пока исследуются все варианты.
Не знаю, что там у тебя и таких как возможно, а что нет. Своё право считать и публично называть тебя подонком я уже реализовал, расслабься и получай удовольствие.
Боюсь, AVR очень плохо подходит для таких игр. Вспомните (или изучите) классику - Core Wars, там главный боевой приём - записать в тело программы-противника свой код (в простейшем случае неисполняемую инструкцию, а в более хитрых, сделать его "своим"). Здесь игроки лишены этого приёма в силу архитектуры данной машины. И, я вот пока не могу понять, каким же образом одна программа будет "мочить" другую?
Собственно, мне кажется, что структуры о объединения Си на 100% покрывают возможности COMMON блока.
Ну, естественно, с правильным распределением функций по файлам. Без этого - никуда: концепция Фортрана подразумевает, что какждая единица компиляции эквивалентна отдельному файлу. Т.е. Фортран-программу можно просто командой ОС copy свалить в один файл, причем, в произвольном порядке, и это никак не отразится на работоспособности. В Си такого нет, поэтому правильное распределение функций по файлам при составлении на Си аналога Фортран-программы является следствием структуры языка (Фортрана), а не его отдельного элемента (COMMON блока).
И, кстати, COMMON блок считается устаревшей конструкцией и реклмендуется к замене на module.
И, кстати, COMMON блок считается устаревшей конструкцией и реклмендуется к замене на module.
Многие пытались испортить Фортран, и while туда добавляли, и прочее, но он пока держится к радости настоящих программистов :)
Многие пытались испортить Фортран, и while туда добавляли, и прочее, но он пока держится к радости настоящих программистов :)
Скажу честно, навскидку синтаксис фортранного while я не напишу. Да и select case каждый раз сверяю с документацией. Но все COMMON заменил на module. И веткой else в if пользуюсь с удовольствием.
А в фортране с удовольствием пользовались бы арифметическим IF - такого крутяка нигде больше нет :)
Да, в некоторых случаях очень удобная конструкция.