Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании > Готовые решения

Готовые решения Здесь собраны все темы, по которым было найдено и выложено решение

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2019, 23:31   #1
Gromov
Уволен из Сегнетикс
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию В помощь всем, кто кодит на С++

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

Если вы программируете на с++, делаете это так же часто как я и вас раздражает способ, с которым реализован обмен данными shared memory, то я предлагаю вам совершенно бесплатно воспользоваться моей программой.

Что делает: анализирует все шаред мемори переменные в проекте лоджика и создаёт файл класса, который вы можете встроить в свою программу. Этот класс является обёрткой над Shm и просто предоставляет более удобные методы работы. Настолько более удобные, что прям, на мой взгляд "так и должно было быть с самого начала".

Как использовать: Копируйте на контроллер и запускайте бинарник из архива. Он выплюнет файл shmemz.hpp. В файле есть описание методов класса и примеры использования в коде.
Класс является надстройкой над Shm, так что инклюд Shm должен быть. ну и далее - #include на файл, который выплюнет программа.

Отдельно хочу сказать про Shm. К сожалению, у меня не так уж много времени, чтобы избавиться от этого недоразумения. Считаю, что segnetics должно быть стыдно официально рекомендовать такое Г, с точки зрения программирования, как официальный способ программирования контроллеров на С++.
Мало того, что там string переопределены, так там ещё и map используется отвратительно, в итоге мы имеем невозможность компилировать это дело от C++11, что накладывает существенные ограничения на использование таких вещей как boost и прочих полезностей.
Я к тому, что такой уровень написания библиотеки говорит о низкой квалификации программиста, который это делал. Да, я знаю, что он уже там не работает, но продукт-то на виду...

Может быть когда-нибудь меня это полностью задолбает и я найду время переделать Shm по-хорошему. Но пока что - вот вам моя программа, пользуйтесь на здоровье.

------

Комментарии, отзывы и пожелания, так же как и критика, принимаются здесь же, в ответах этой темы =)
Вложения
Тип файла: rar memz.rar (8.3 Кбайт, 60 просмотров)


__________________
В сегнетиксе не работаю с самого начала 2019 года.
Gromov вне форума   Ответить с цитированием
Старый 30.03.2019, 10:34   #2
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: В помощь всем, кто кодит на С++

Цитата:
Комментарии, отзывы и пожелания, так же как и критика, принимаются здесь же, в ответах этой темы =)
Хотелось бы в первую очередь дать пожелания с замечаниями по оформлению вашей работы.

Что мне показалось не так:

1. На дворе 2019 год, поэтому странным выглядит распространение таких утилит в бинарном виде через форум. Это было нормально 10-20 лет назад, но сейчас это выглядит странно.

Типовым средством распространения таких вещей сейчас является GitHub, где можно выложить и исходники, и бинарники.

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

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

Как пример, можно привести мой репозиторий: https://github.com/gelsrc/shm2mqtt или репозиторий "конкурентов" Segnetics: https://github.com/contactless/wb-mqtt-serial

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

2. Было бы здорово, если бы был предоставлен пример работы утилиты с различными вариантами, что бы ее работу можно было оценить просто глазами без необходимости проводить самостоятельный процесс тестирования. Это сильно упростит оценку вашей работы и может привлечь внимание большего числа пользователей. Лень и занятость никто не отменял.

3. Не принято распространять такие продукты rar-архвами, лучше использовать zip.

Цитата:
Отдельно хочу сказать про Shm. К сожалению, у меня не так уж много времени, чтобы избавиться от этого недоразумения. Считаю, что segnetics должно быть стыдно официально рекомендовать такое Г, с точки зрения программирования, как официальный способ программирования контроллеров на С++.
Я бы не был так категоричен, т.к. все познается в сравнении. В принципе, опытному разработчику данного материала хватило бы для воспроизведения нужных механизмов в том виде и с теми характеристиками, которые требуются. Так что нормально, с пивом потянет.

Я правильно понял (в т.ч. по форумному статусу), что вы ушли из Segnetics?
Gel вне форума   Ответить с цитированием
Старый 30.03.2019, 11:24   #3
Gromov
Уволен из Сегнетикс
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: В помощь всем, кто кодит на С++

1. Понимаете, во-первых, у меня нет там аккаунта, а во-вторых, посетителям гитхаба оно ни к чему, я считаю. А вот на форуме полно людей "около-программистов", которым будет полезно. А вот исходники им могут только навредить, по моему мнению. Да и потом, я сам не считаю что очень уж хорошо программирую на плюсах и конкретно в этом проекте не занимался правильными вещами, не использовал динамические выделения памяти, например, хотя в некоторых местах это было бы здраво и так далее. Короче говоря, конкретно код показывать не горю желанием, так как прогерам низкой квалификации он бесполезен, а прогеры высокой квалификации будут плеваться от того, что оно сделано "на отвали". На самом деле, оно просто сделано быстро, без особого старания, лишь бы работало. И работает.
А так вообще - да, я за опенсорс, однозначно. Нет там ничего такого "страшного" и "ноухау" в этом смлоджике, чтобы было что прятать. Как и нет ничего страшного в закрытых макросах конструктора. Просто макросы закрыты по тем же причинам, что я выше описал - люди слабые в fbd просто ещё больше запутаются от этого. А сильным в fbd оно и не надо.

2. Видео подходит? Могу записать, это не долго.

3. Я бы просто бинарник приложил, да вот только форум не ест файлы без расширения...


Я ушел с началом 2019 года. Или, точнее, с концом 2018.


__________________
В сегнетиксе не работаю с самого начала 2019 года.

Последний раз редактировалось Arsie, 16.06.2022 в 14:38
Gromov вне форума   Ответить с цитированием
Старый 30.03.2019, 15:40   #4
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: В помощь всем, кто кодит на С++

Цитата:
Сообщение от Gromov Посмотреть сообщение
...Да и потом, я сам не считаю что очень уж хорошо программирую на плюсах и конкретно в этом проекте не занимался правильными вещами...
Это необоснованные страхи. Плохой, написанный и работающий код лучше, чем хороший ненаписанный. Кроме того, если вас покритикуют, то вам же от этого в итоге и будет лучше.

Так же не стоит переживать, что GitHub "замусорится", т.к. он для этого и создавался.

Обратите внимание, что GitHub (и другие аналоги) -- это не просто хранение кода, это инфраструктура для взаимодействия и поддержки кода. Если хотите, это сейчас необходимый элемент культуры разработки.

Цитата:
... не использовал динамические выделения памяти, например, хотя в некоторых местах это было бы здраво и так далее...
Не в динамическом выделении памяти счастье. Для начала программа должна просто работать. Можно назвать прототипом и тогда к вам никаких претензий не будет от слова совсем.

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

GitHub -- эффективный инструмент для этого: 1) удобный просмотр кода и документации (например, MarkDown-файлов); 2) баг-трекер, который можно использовать в т.ч. для обсуждения вопросов; 3) история кода и релизы; 4) pull request, командная разработка; 5) отдельное wiki, если нужно.

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

Цитата:
2. Видео подходит? Могу записать, это не долго.
Имелось в виду не видео, а входные и выходные данные.

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

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

Вот, о чем я писал. Видео в данном случае не подходит.

Последний раз редактировалось Gel, 30.03.2019 в 15:53
Gel вне форума   Ответить с цитированием
Старый 01.04.2019, 07:00   #5
Max2114
Senior Member
 
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили: 21 раз(а) в 21 сообщениях
По умолчанию Ответ: В помощь всем, кто кодит на С++

Цитата:
Сообщение от Gromov Посмотреть сообщение
Я ушел с началом 2019 года. Или, точнее, с концом 2018. Теперь, в основном, преподаю и иногда участвую в каких-то разовых проектах по интересной автоматизации.
А чего тогда Вам до сих пор нельзя отправить личное сообщение?
Max2114 вне форума   Ответить с цитированием
Старый 01.04.2019, 11:22   #6
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: В помощь всем, кто кодит на С++

Цитата:
Сообщение от Gel Посмотреть сообщение
Не стоит стесняться или быть "собакой на сене", утаивая исходный код от общественности.
Крайне важная функция гитхаба - сильное затруднение распространять программный код с "закладками", т.к. доступны исходники, которые каждый может скомпилировать заново.

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

Мне больше нравится использование localhost + modbus для работы из PHP. Но всё равно, Дмитрию спасибо за создание подобной обёртки, очень полезно!


Добавлено через 30 минут

Цитата:
Сообщение от Gromov Посмотреть сообщение
Я ушел с началом 2019 года. Или, точнее, с концом 2018. Теперь, в основном, преподаю и иногда участвую в каких-то разовых проектах по интересной автоматизации.
Т.к. Дмитрий постоянно упоминает свою преподавательскую деятельность, то я расставлю все точки над "i" для создания у участников форума правильного впечатления.

Дело в том, что ему была доверена пусконаладка вентиляции нового цеха. За две или три недели Дмитрий так и не смог выяснить, что две заслонки из трёх (перепускная рекуператора и приточная) работают "наоборот". Также Дмитрий потерял немало времени на войну с частотниками, пример работы с которыми я создал ещё в 2006 году Ну и мелочи всякие.

Такой вот опыт у преподавателя и участника "разовых проектов по интересной автоматизации".


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


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 01.04.2019 в 16:12
Arsie вне форума   Ответить с цитированием
Старый 01.04.2019, 18:53   #7
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
Lightbulb Ответ: В помощь всем, кто кодит на С++

Цитата:
Сообщение от Arsie Посмотреть сообщение
Мне больше нравится использование localhost + modbus для работы из PHP
Я правильно понял, что эту альтернативу вы предлагаете взамен извращений со шмемами?
А можно ссылочку, где о таком подходе почитать подробнее можно? (в идеале бы вообще с привязкой к SMH4 или хотя бы Триму)...
ailcat вне форума   Ответить с цитированием
Старый 01.04.2019, 18:53   #8
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: В помощь всем, кто кодит на С++

Цитата:
Сообщение от Arsie Посмотреть сообщение
Крайне важная функция гитхаба - сильное затруднение распространять программный код с "закладками", т.к. доступны исходники, которые каждый может скомпилировать заново.
Согласен, и это тоже.

Цитата:
...За две или три недели Дмитрий так и не смог выяснить, что две заслонки из трёх (перепускная рекуператора и приточная) работают "наоборот"...
Хочу пожелать Дмитрию быть более открытым, не стесняться своих ошибок, не варится в собственном соку (или хотя бы в меру).

Если чувствуется, что есть недостаток абстрактного мышления, умения локализовывать проблемы и скорости соображалки, то потренировать это.
Gel вне форума   Ответить с цитированием
Старый 01.04.2019, 20:07   #9
Gromov
Уволен из Сегнетикс
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: В помощь всем, кто кодит на С++

Можно сколько угодно рассуждать о том, что происходило на объекте, но не следует замалчивать тот факт, что проверка монтажа не была моей задачей, как потом выяснилось. И "зря потраченное время" - это то, что я лазил там под потолком и разбирался, куда что монтажник перепутал. А перепутал он всё.

Частотники? Я с ними боролся потому, что с ними нет связи, ведь на объекте нет земли и проброшено всё отвратительным проводом ради экономии.

О том, хороша моя преподавательская деятельность или нет - спрашивайте людей, кто через это прошел, кто за это заплатил деньги. Спрашивайте их, довольны они или нет, а не Арсения, который не удосужился ни одного видео посмотреть (бесплатно), хотя я ему предлагал оценить. Он как последователь общества плоской земли, не хочет разбираться, просто не верит.

Вообще, зачем тут срач разводить? Давайте по конструктиву.


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

Когда я переделаю Shm на нормальный язык, я обязательно интегрирую это дело, чтобы всё собиралось в 1 файл класса Shm, работал с с++11 и более новыми, и всё это было легче чем сейчас.


__________________
В сегнетиксе не работаю с самого начала 2019 года.
Gromov вне форума   Ответить с цитированием
Старый 02.04.2019, 06:50   #10
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: В помощь всем, кто кодит на С++

Цитата:
Сообщение от Gromov Посмотреть сообщение
...Частотники? Я с ними боролся потому, что с ними нет связи, ведь на объекте нет земли и проброшено всё отвратительным проводом ради экономии...
Я всегда за то, что бы услышать версии обеих сторон :-)

Цитата:
Что касается примеров работы - они в сгенерированном классе присутствуют. Достаточно взять контроллер со шмемами в лоджике и запустить на нём бинарник.
А что, если у меня нет под рукой контроллера и я не могу посмотреть?

С точки зрения передачи знаний и "маркетинга" (продвижения утилиты среди разработчиков) ваш результат не оптимальный.

Документация, документация и еще раз документация, как завещал великий Ленин. Даже для таких небольших утилит.
Gel вне форума   Ответить с цитированием
Старый 02.04.2019, 06:59   #11
Gromov
Уволен из Сегнетикс
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: В помощь всем, кто кодит на С++

Тем временем, выдалась ещё одна рабочая ночь, когда мне понадобилось для другого проекта использовать с++11 и шмемы одновременно... ШТОШ, этот день настал...

Не могу сказать, что задачу я решил "красиво", но я избавился от использования сегнетиксовой обёртки над обёрткой Райнера Лехрига. Райнер Лехриг молодец, к нему вопросов нет, умеет кодить. Правда, вопросы есть всё равно, зачем надо было использовать эту библиотеку, ведь она и под винду и под всё остальное. Ну да ладно, раз есть и работает - пусть будет. Из готовых альтернатив - это буст, а я не хочу использовать буст в данном проекте. Ещё из альтернатив - это mmap или стандартный же sys/shm.h, на котором и основывался Райнер. Однако, там надо будет предусматривать блокирующие вызовы и разрулить в posix всё это дело, а я не хочу сейчас этим заниматься. Да и по сути, придётся сделать то же самое, что сделал Райнер.

Лирическое отступление кончилось. Теперь к делу:
Новая версия программы выдаёт класс, который не использует обёртку Shm от сегнетикса, следовательно, может быть скомпилирован с С++11 и выше, и НЕ ПЕРЕОПРЕДЕЛЯЕТ стринги. УРА, товарищи!

Прикладываю архив, в котором вы найдёте бинарник. Что делать дальше:
1. Копируйте бинарник на контроллер, на котором крутится проект, выглядящий так, примерно:

После запуска бинарника, он вам выплюнет следующий вывод в консоль:
Код:
root@localhost:/projects/memzv2# ./memz
Найдено SHMEM переменных: 17
Размер памяти: 65606
Номер: Имя - Тип - Направление - Смещение
1: res1 - SHORT - READ - 65538
2: res2 - SHORT - READ - 65540
3: res3 - SHORT - READ - 65542
4: res4 - SHORT - READ - 65544
5: res5 - SHORT - READ - 65546
6: data1 - SHORT - WRITE - 65548
7: data2 - SHORT - WRITE - 65550
8: data3 - SHORT - WRITE - 65552
9: data4 - SHORT - WRITE - 65554
10: data5 - SHORT - WRITE - 65556
11: data6 - SHORT - WRITE - 65558
12: data7 - SHORT - WRITE - 65560
13: data8 - SHORT - WRITE - 65562
14: data9 - SHORT - WRITE - 65564
15: data10 - SHORT - WRITE - 65566
16: data11 - SHORT - WRITE - 65568
17: data12 - SHORT - WRITE - 65570
Файл класса находится здесь: /projects/shmemz.hpp
Описание использования класса найдёте в этом же файле.
И файл класса, записанный по указанному адресу. Кроме того, можно вызвать ./memz с атрибутом "-p" и указать адрес., например так:
Код:
root@localhost:/projects/memzv2# ./memz -p /home/mycode/shmemz.hpp
Так вы явно укажите, куда хотите сохранить выданный файл класса.

2. Описание использования класса есть в самом классе, однако, прикладываю ещё и код с примером main.cpp

Код:
#include "rlsharedmemory.h" 
#include "shmemz.hpp"

#define timesec 1
#define timensec 0

struct timespec tw = {timesec,timensec};
struct timespec tr;

Logix logix; // Объявление класса smlogix

int main(int argc, char ** argv){   

    int addict =0;

    for (;;) {
        nanosleep (&tw, &tr);
 
        if (addict <= 100){
            addict++;
        } else {
            addict =0;
        }

        logix.data1 = addict;
        logix.data2 = logix.data1 + 1;
        logix.data3 = logix.data2 + 1;
        logix.data4 = logix.data3 + 1;
        logix.data5 = logix.data4 + 1;
        logix.data6 = logix.data5 + 1;
        logix.data7 = logix.data6 + 1;
        logix.data8 = logix.data7 + 1;
        logix.data9 = logix.data8 + 1;
        logix.data10 = logix.data9 + 1;
        logix.data11 = logix.data10 + 1;
        logix.data12 = logix.data11 + 1;

        logix.refresh();

        printf("Принято:\n  res1: %i\n  res2: %i\n  res3: %i\n  res4: %i\n  res5: %i\n", logix.res1, logix.res2, logix.res3, logix.res4, logix.res5);
        printf("Отправлено: data1: %i\n", logix.data1);  
    }
}
Здесь только основное.
Вначале инклюды. Кроме ваших - надо добавить библиотеку Райнера Лехрига. После - мой файл класса.
Следующие строки - задержку по времени делаем, как обычно.
Logix logix; - объявляем тип класса с большой буквы, название с маленькой. Название можете указать любое, но лоджикс очень уж удобно использовать.
Переменная addict - просто инкремент, чтобы данные менялись.
Далее мы обращаемся к переменным из проекта лоджика просто по их названию logix.data1 и так далее. Мы можем и читать их и писать, они там просто хранятся.
data - я присваиваю сюда значения из своей программы, так как эти переменные созданы для записи, лоджик их читает как свои входы.
res - здесь я получаю данные из лоджика, для меня это такие же переменные как и data, я просто использую их в своей программе.
logix.refresh(); - самый полезный метод. Он записывает все данные, которые мы прописали в переменные, и считывает все данные, которые прописал лоджик. То есть, все данные просто обновляются.
После этого пара выводов на экран.

Если нужны выборочные чтение/запись, то можно использовать метод класса logix, образованный по имени переменной. Например, для переменной data1 будет метод
logix.setdata1(value); где value - это число, которое мы запишем сразу в лоджик.
Для чтения - аналогично
value = logix.getres1();

Фух. Надеюсь, это хоть кому-нибудь будет нужно =)

И да, можно поудалять всякой ненужной теперь ерунды из мейкфайла и архива проекта.

Мой мейкфайл теперь выглядит так:
Код:
#makefile Gromov Dmitry. Assamble all shmem shit.
CC=g++
CFLAGS=-c -Wall -Ofast -march=native -std=c++11
LDFLAGS=-lpthread 
SOURCES=main.cpp rlsharedmemory.cpp rlwthread.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=program

all: $(SOURCES) $(EXECUTABLE)
	
$(EXECUTABLE): $(OBJECTS) 
	$(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
	$(CC) $(CFLAGS) $< -o $@

clean:
	rm -rf *.o
Впрочем, если вы пользуетесь любым IDE, то в мейкфайл можно и не лазить. А вот файл класса всё равно можно включить, будет полезно!

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

Класс не предоставляет проверку соответствия переменных тому, что мы хотим. Потом и это я тоже добавлю, но не сейчас. Работать можно уже сейчас. Уже полноценно работать.
Вложения
Тип файла: zip memz.zip (9.6 Кбайт, 39 просмотров)


__________________
В сегнетиксе не работаю с самого начала 2019 года.
Gromov вне форума   Ответить с цитированием
Старый 02.04.2019, 12:20   #12
Котопёс
Guest
 
Сообщения: n/a
По умолчанию Ответ: В помощь всем, кто кодит на С++

Цитата:
может быть скомпилирован с С++11 и выше
Боюсь спросить. Откуда такое нарочитое желание использовать С++11, не 98, 03 не 14, 17 а именно 11 ? Почему не чистый Си наконец ?

Цитата:
Ещё из альтернатив - это mmap или стандартный же sys/shm.h
Зачем вы противопоставляете функцию "mmap" из POSIX API для работы с разделяемой памятью и заголовочный файл "sys/shm.h" ?
  Ответить с цитированием
Старый 02.04.2019, 14:08   #13
Gromov
Уволен из Сегнетикс
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: В помощь всем, кто кодит на С++

Цитата:
Сообщение от Котопёс Посмотреть сообщение
Боюсь спросить. Откуда такое нарочитое желание использовать С++11, не 98, 03 не 14, 17 а именно 11 ? Почему не чистый Си наконец ?
Нравится он мне. Да и изменения там существенные, на мой взгляд, а всё что дальше уже много общего очень, и не изменено.


Цитата:
Сообщение от Котопёс Посмотреть сообщение
Зачем вы противопоставляете функцию "mmap" из POSIX API для работы с разделяемой памятью и заголовочный файл "sys/shm.h" ?
Так это ж разные подходы. Можно без mmap делать, а можно с ним.


__________________
В сегнетиксе не работаю с самого начала 2019 года.
Gromov вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 14:45.


Версия vBulletin: 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2024