Size: a a a

2021 March 03

AS

Anatoly Shirokov in supapro.cxx
Stas Koynov
да не трольте меня, а просто скажите как и я пойду спать. я же не тролю, я хочу узанть. как решить эту задачу в ++.
Ее решают всякие гарды
источник

SK

Stas Koynov in supapro.cxx
ну псевдо код можно, я же привел и реальный пример, и игрушечный
источник

AS

Anatoly Shirokov in supapro.cxx
Nastya Medveda
Перестаньте, пожалуйста. Вы оскорбляете чувства программистов на Си.
Не противозаконно,если они не верующие
источник

M

MrAndreson in supapro.cxx
Anatoly Shirokov
Не противозаконно,если они не верующие
Но нужно отдать им должное, у них стальные нервы
источник

I

Ilya in supapro.cxx
для чего нужен _stdcall в директивах препроцессора DLL?
источник

I

Ilya in supapro.cxx
Можно ли его убрать?
источник

AS

Anatoly Shirokov in supapro.cxx
Вообщем, предложение. С флудом завязываем. Сишникам, Сипипишникам выкурить трубку дружбы за сотруджество родов войск. Ну и заняться непосредственно ответами на вопросы.
источник

AS

Anatoly Shirokov in supapro.cxx
Ilya
для чего нужен _stdcall в директивах препроцессора DLL?
Гуглить calling convention
источник

I

Ilya in supapro.cxx
Anatoly Shirokov
Гуглить calling convention
спасибо
источник

SK

Stas Koynov in supapro.cxx
и так никто мне норм не обьяснил как сделать очистку со гласно канонам ++ :(
источник

LA

Liber Azerate in supapro.cxx
Stas Koynov
и так никто мне норм не обьяснил как сделать очистку со гласно канонам ++ :(
Объяснили – RAII
источник

M

MrAndreson in supapro.cxx
Stas Koynov
ну псевдо код можно, я же привел и реальный пример, и игрушечный
Напр. висит у тебя какой то контроллер чего либо на шине pci.
1. Создаешь объект, который в конструкторе захватывает контроллер. После этого, например, другие процессы с этим контроллером общаться не могут. Соответственно в классе этом должны быть методы общения контроллером или инициализацией его каких то фич или что то в этом духе, в зависимости от задачи.
2. Инициализируешь контролер по своему желанию.
3. Вдруг неожиданно ты понимаешь, что МК не может что то делать или есть какая то ошибка или ты попытался до него достучаться, а не получилось, так ты берешь и удаляешь тот объект, который создал в п. 1, а там, в деструкторе контроллер освобождается для других процессов и все, инициализация с ошибкой, ресурсы освобождены

UPD: не учитывался в код по ссылке выше, может там что то другое, но суть та же - захват есть инициализация.
UPD: объяснил как мог, если что не ругайтесь)
источник

AS

Anatoly Shirokov in supapro.cxx
Stas Koynov
и так никто мне норм не обьяснил как сделать очистку со гласно канонам ++ :(
Ну, если ты не увидел, то тебе ответили raii
источник

LA

Liber Azerate in supapro.cxx
Stas Koynov
и так никто мне норм не обьяснил как сделать очистку со гласно канонам ++ :(
К стандарту эдак 26-ому в С++ появятся линейные типы. Может быть
источник

LC

Love Sosa Chief keef in supapro.cxx
Всем добрый вечер не подскажите в чем может быть проблема? вылетает эксепшон когда вывожу массив чаров на экран пишет нарушение прав доступа чтения

string sentecsice;
   cin >> sentecsice;
   lengh = sentecsice.size();
   char* sentecsice2 = new char[lengh + 1]{};
   strcpy_s(sentecsice2, lengh+1, sentecsice.c_str());

тут вставкой на ассемблере присваиваю значние заново каждому элементу массива sentecsice2(администрация группы запретила показывать код на ассемблере)
cout << sentecsice2 << endl;
ошибка выдает в последней строке
источник

SK

Stas Koynov in supapro.cxx
MrAndreson
Напр. висит у тебя какой то контроллер чего либо на шине pci.
1. Создаешь объект, который в конструкторе захватывает контроллер. После этого, например, другие процессы с этим контроллером общаться не могут. Соответственно в классе этом должны быть методы общения контроллером или инициализацией его каких то фич или что то в этом духе, в зависимости от задачи.
2. Инициализируешь контролер по своему желанию.
3. Вдруг неожиданно ты понимаешь, что МК не может что то делать или есть какая то ошибка или ты попытался до него достучаться, а не получилось, так ты берешь и удаляешь тот объект, который создал в п. 1, а там, в деструкторе контроллер освобождается для других процессов и все, инициализация с ошибкой, ресурсы освобождены

UPD: не учитывался в код по ссылке выше, может там что то другое, но суть та же - захват есть инициализация.
UPD: объяснил как мог, если что не ругайтесь)
с одним ресурсом понятно. а когда в ините инициализируется 10 чего-то и на 7ой упс приехали. как я должен освободить первые 6. мне raii для каждого делать?
источник

AS

Anatoly Shirokov in supapro.cxx
Stas Koynov
с одним ресурсом понятно. а когда в ините инициализируется 10 чего-то и на 7ой упс приехали. как я должен освободить первые 6. мне raii для каждого делать?
Да
источник

SK

Stas Koynov in supapro.cxx
ну вот так бы сразу. ладно буду знать
источник

I

Ilya in supapro.cxx
еще небольшой вопросик, обязательно ли прописывать
extern "C" __declspec(dllexport) 
перед определением каждого метода в хедере или можно сделать отдельный cpp файл, где создать объект класса и поступить подобным образом:

Estimator PoseEstimator = Estimator();

extern "C" void __declspec(dllexport) __stdcall  Close()
{
 PoseEstimator.close();
}
источник

AS

Anatoly Shirokov in supapro.cxx
Ilya
еще небольшой вопросик, обязательно ли прописывать
extern "C" __declspec(dllexport) 
перед определением каждого метода в хедере или можно сделать отдельный cpp файл, где создать объект класса и поступить подобным образом:

Estimator PoseEstimator = Estimator();

extern "C" void __declspec(dllexport) __stdcall  Close()
{
 PoseEstimator.close();
}
Тебе в хедере нужно переключать объявление для клиента (dllimport), и для реализации (dllexport)
источник