Можете объяснить, почему не С++? Что с ним такого, чего нет в С#, Я уже программировал на Delphi (полтора года), и, думаю, что уже могу понять, какие элементы нужны в конкретных ситуаций. Если вам интересно я могу вам кинуть свой курсовой проект, в который вложил все свои знания. (есть баги с интернетом ). https://yadi.sk/d/zHP0noQEhCJLA . Вначале (с авторизацией) натупил, т.к. не представлял грамотный алгоритм
» Вопросы по программированию на C/С++
Цитата:
Можете объяснить, почему не С++? Что с ним такого, чего нет в С#
mmotop20oo12 я же выше всё написал, что думаю по этому поводу. с++/с# - это лишь инструменты и выбор стоит за тобой. Но с++ обладает огромными возможностями и содержит кучу нюансов, и именно поэтому я советую начать с чего-нибудь попроще, наращивать сложность постепенно, а то и надорваться можно.
Посмотри/почитай программисткие шуточки, в каждой шутке есть доля шутки.
Ну, уговорили тогда подскажите литературу. Шилдт подойдет? Какая книга?
mmotop20oo12, тут в соседней теме по C# зашёл разговор за книги.
а чего тема такая молодая, даже страницы не набралось
Добавлено:
может Шилдт'а начать читать? Говориться что он авторитет в языках С
Добавлено:
может Шилдт'а начать читать? Говориться что он авторитет в языках С
mmotop20oo12
Цитата:
Цитата:
а чего тема такая молодая, даже страницы не набралосьhttp://forum.ru-board.com/topic.cgi?forum=33&topic=3706&glp
Здравствуйте. возникла очень странная проблема: не хочет компилировать проект (visual studio 2013), не работает функция gets(str); Также не работают и остальные функции типа strcpy, strcat и т.д. Вот код:
Код:
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cstdio>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
char str;
gets(str);
return 0;
}
Код:
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cstdio>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
char str;
gets(str);
return 0;
}
using namespace std;
int main()
{
char* str = new char[160];
initscr();
getstr(str);
...
лучше всего...
int main()
{
char* str = new char[160];
initscr();
getstr(str);
...
лучше всего...
mmotop20oo12, я бы всё же не использовал unsafe функции, в ногу конечно не выстрелишь, но думать больше надо
Всем привет.
Может конечно не в совсем в тему, но все же задам вопрос.
В связи с выходом VS2015 - решил проект(MPC-BE) адаптировать под новую студию. Все получилось, кроме одной "мелочи". Проект для построение .dll не собирается в VS2015, ругается при линковке:
Код:
error LNK2001: unresolved external symbol __wcsicmp
Может конечно не в совсем в тему, но все же задам вопрос.
В связи с выходом VS2015 - решил проект(MPC-BE) адаптировать под новую студию. Все получилось, кроме одной "мелочи". Проект для построение .dll не собирается в VS2015, ругается при линковке:
Код:
error LNK2001: unresolved external symbol __wcsicmp
[more] [more] [more] Сначала не нашел этой темы и поэтому "залез" в Фортран, хотя пишу на C.
У меня основной алгоритм последовательный, т.е. не распараллеливается, и при этом выдает последовательно числа, каждое из которых независимо от основного алгоритма обрабатывается другим алгоритмом, который "завязан" только на это число и на числовую информацию, которая занимает немного места в памяти, известна до применения нового алгоритма и при этом одна и та же для всех чисел, выдаваемых первым алгоритмом. При этом числа, выдаваемые последовательно основным алгоритмом, второй алгоритм модифицирует. Не подскажите, как грамотно задействовать остальные ядра, чтобы они не простаивали. Идея понятна: размножить числовую информацию, которая занимает немного места в памяти, в количестве, равном числу оставшихся ядер, а вот как дальше действовать? Вопрос стал ребром на процессорах с архитектурой haswell, т.к. скорость счета с помощью новых команд FMA (+=a*b) увеличилась по сравнению с SSE (вплоть до последних версий SSE) в 4 раза. Это легко проверить: у меня два 6-ти ядерных процессора - Intel® Core™ i7-980 Processor (12M Cache, 3.33 GHz) и Intel® Core™ i7-5820K Processor (15M Cache, 3.33 GHz). Так вот второй перемножает две матрицы 10000*10000 в четыре раза быстрее (7.0 с. и 29.3 с.). При этом использовалась функция перемножения матриц dgemm из пакета Intel MKL. Пользуюсь интеловским компилятором и соответственно OpenMP. Дело в том, что основной алгоритм выдает числа не регулярно и надо отслеживать освободившиеся ядра или ставить в очередь, если все ядра заняты. Но вот куда в очередь поставить, чтобы алгоритм работал как можно эффективней, если все ядра заняты, не совсем понятно.
P.S.
Частично ответ получил в теме, посвященной Фортрану, но может быть еще что-либо дельное услышу. [/more] [/more] [/more]
У меня основной алгоритм последовательный, т.е. не распараллеливается, и при этом выдает последовательно числа, каждое из которых независимо от основного алгоритма обрабатывается другим алгоритмом, который "завязан" только на это число и на числовую информацию, которая занимает немного места в памяти, известна до применения нового алгоритма и при этом одна и та же для всех чисел, выдаваемых первым алгоритмом. При этом числа, выдаваемые последовательно основным алгоритмом, второй алгоритм модифицирует. Не подскажите, как грамотно задействовать остальные ядра, чтобы они не простаивали. Идея понятна: размножить числовую информацию, которая занимает немного места в памяти, в количестве, равном числу оставшихся ядер, а вот как дальше действовать? Вопрос стал ребром на процессорах с архитектурой haswell, т.к. скорость счета с помощью новых команд FMA (+=a*b) увеличилась по сравнению с SSE (вплоть до последних версий SSE) в 4 раза. Это легко проверить: у меня два 6-ти ядерных процессора - Intel® Core™ i7-980 Processor (12M Cache, 3.33 GHz) и Intel® Core™ i7-5820K Processor (15M Cache, 3.33 GHz). Так вот второй перемножает две матрицы 10000*10000 в четыре раза быстрее (7.0 с. и 29.3 с.). При этом использовалась функция перемножения матриц dgemm из пакета Intel MKL. Пользуюсь интеловским компилятором и соответственно OpenMP. Дело в том, что основной алгоритм выдает числа не регулярно и надо отслеживать освободившиеся ядра или ставить в очередь, если все ядра заняты. Но вот куда в очередь поставить, чтобы алгоритм работал как можно эффективней, если все ядра заняты, не совсем понятно.
P.S.
Частично ответ получил в теме, посвященной Фортрану, но может быть еще что-либо дельное услышу. [/more] [/more] [/more]
Не подскажете, где найти простой пример HID-клиента на обычном Си. Нашёл HID Demonstrator на плюсах, но моя среда разработки плюсы не поддерживает.
Aleksoid1978
Так как проект mpciconlib крайне простой, то создание его с нуля и добавление в него файлов старого проекта решило проблему.
Так как проект mpciconlib крайне простой, то создание его с нуля и добавление в него файлов старого проекта решило проблему.
ItsJustMe
Да я решил проблему похожим способом. Сделал новый проект, он собрался. И сравнением настроек нашёл причину
Да я решил проблему похожим способом. Сделал новый проект, он собрался. И сравнением настроек нашёл причину
Как создать класс наследник в си++ ?
diamon28
class Parent {};
class Child : public Parent {};
с помощью выделенного и объявляется, что класс Child является наследником класса Parent.
Кроме public-наследования есть еще protected- и private-. Отличие в доступе к методам родительского класа извне.
class Parent {};
class Child : public Parent {};
с помощью выделенного и объявляется, что класс Child является наследником класса Parent.
Кроме public-наследования есть еще protected- и private-. Отличие в доступе к методам родительского класа извне.
Часто вижу подобную конструкцию для очистки списка:
Код: class CFilter {...};
CAtlList<CFilter*> filters;
...
while (!filters.IsEmpty()) {
delete filters.RemoveHead();
}
Код: class CFilter {...};
CAtlList<CFilter*> filters;
...
while (!filters.IsEmpty()) {
delete filters.RemoveHead();
}
V0lt
Цитата:
Во втором варианте нет удаления элементов списка из памяти - только убирание элементов из списка.
Цитата:
второй вариант не эквивалентен первому
Во втором варианте нет удаления элементов списка из памяти - только убирание элементов из списка.
Igorr
Цитата:
MSDN говорит иначе.
Цитата:
Цитата:
Во втором варианте нет удаления элементов списка из памяти - только убирание элементов из списка.
MSDN говорит иначе.
Цитата:
CAtlList::RemoveAll
This method removes all of the elements from the list and frees the allocated memory. In debugs builds, an ATLASSERT will be raised if all elements aren't deleted or if the list structure has become corrupted.
V0lt
С этим списком так и есть. Но народ (и я в том числе) часто пользуется списками-массивами на основе CObject (CPtrArray и т.д.), а для них
Цитата:
С этим списком так и есть. Но народ (и я в том числе) часто пользуется списками-массивами на основе CObject (CPtrArray и т.д.), а для них
Цитата:
CObArray::RemoveAllОчевидно, что для единообразия первый вариант предпочтителен.
Removes all the pointers from this array but does not actually delete the CObject objects.
Посоветуйте, как избавиться от вот этого сообщения:
Цитата:
В данном случае настроено окружение для компилятора Intel C++, но используется Microsoft C++. Есть какой-нибудь символ препроцессора или волшебный ключик, который даст понять компилятору, чтобы он успокоился?
Цитата:
You are using an Intel supplied intrinsic header file with a third-party compiler
В данном случае настроено окружение для компилятора Intel C++, но используется Microsoft C++. Есть какой-нибудь символ препроцессора или волшебный ключик, который даст понять компилятору, чтобы он успокоился?
http://rghost.ru/7tM6ZflpJ
никто не сможет объяснить в двух словах простыми словами, суть BufferOverflow и __security_check_cookie.
Добавлено:
Цитата:
это вот это?
никто не сможет объяснить в двух словах простыми словами, суть BufferOverflow и __security_check_cookie.
Добавлено:
Цитата:
Защита пространства исполняемого кода для Windows
Сейчас существует несколько различных решений, предназначенных для защиты исполняемого кода в системах Windows, предлагаемых как компанией Майкрософт, так и сторонними компаниями. Майкрософт предложила своё решение, получившее название DEP (от англ. Data Execution Prevention — «предотвращение выполнения данных»), включив его в пакеты обновлений для Windows XP и Windows Server 2003. DEP использует дополнительные возможности новых процессоров Intel и AMD, которые были предназначены для преодоления ограничения в 4 Гб на размер адресуемой памяти, присущий 32-разрядным процессорам. Для этих целей некоторые служебные структуры были увеличены. Эти структуры теперь содержат зарезервированный бит NX. DEP использует этот бит для предотвращения атак, связанных с изменением адреса обработчика исключений (так называемый SEH-эксплойт). DEP обеспечивает только защиту от SEH-эксплойта, он не защищает страницы памяти с исполняемым кодом. Кроме того, Майкрософт разработала механизм защиты стека, предназначенный для Windows Server. Стек помечается с помощью так называемых «осведомителей» (англ. canary), целостность которых затем проверяется. Если «осведомитель» был изменён, значит, стек повреждён. Существуют также сторонние решения, предотвращающие исполнение кода, расположенного в областях памяти, предназначенных для данных или реализующих механизм ASLR.
это вот это?
Переполнение буффера происходит, когда в функцию (например wsprintf()) подаётся больше данных, чем размер на стеке выделенного буффера. Функция сначала записывает полностью буффер, а потом продолжает писать дальше, а там адрес возврата из функции. Если эти данные смастерить из своего кода таким образом, что вместо штатного адреса возврата записывается возврат на этот код, то можно сделать джайлбрейк для айфона и ещё много полезного.
Но некоторым такая удобная вещь почему то не понравилась и они придумали __security_check_cookie();
На стеке, сразу перед штатным адресом возврата выделяется переменная, в которую в самом начале подпрограммы записываетса случайное значение. В самом конце подпрограммы эта переменная проверяется, и, если значение изменилось, делается вывод, что была попытка переписать и следующий непосредственно за переменной адрес возврата и прогу посылают на __debugbreak();
В C компиляторах эта проверка обычно по умолчанию уже включена, а в приведённой ссылке находится её реализация для ASMa.
Но некоторым такая удобная вещь почему то не понравилась и они придумали __security_check_cookie();
На стеке, сразу перед штатным адресом возврата выделяется переменная, в которую в самом начале подпрограммы записываетса случайное значение. В самом конце подпрограммы эта переменная проверяется, и, если значение изменилось, делается вывод, что была попытка переписать и следующий непосредственно за переменной адрес возврата и прогу посылают на __debugbreak();
В C компиляторах эта проверка обычно по умолчанию уже включена, а в приведённой ссылке находится её реализация для ASMa.
Пишу программку на Borland C++ встали два вопроса
это анализ строки (наличие русских букв)
Поиск строки текста (русского)
Поиск регулярным выражением комбинации символов (русских букв)
(строка ansi)
Что по посоветуете лучше использовать.
Нужно получить веб страницу к примеру с вирустотал и распарсить её, опять же что использовать ? (навскидку думаю копать в сторону CURL)
это анализ строки (наличие русских букв)
Поиск строки текста (русского)
Поиск регулярным выражением комбинации символов (русских букв)
(строка ansi)
Что по посоветуете лучше использовать.
Нужно получить веб страницу к примеру с вирустотал и распарсить её, опять же что использовать ? (навскидку думаю копать в сторону CURL)
Цитата:
Нужно получить веб страницу к примеру с вирустотал и распарсить её, опять же что использовать ?
Нужно, чтобы прога при чтении указывала собственную кодировку UTF-8.
Данная кодировка была специально придумана чтобы не париццо с парсерами - любой текст строго принадлежит определенным подмножествам символов, языки не пересекаются, поэтому всегда известно на каком языке написано сообщение. Выделить из него русский - полторы секунды. В общем - мечта шпийонов.
Цитата:
это анализ строки (наличие русских букв)
Если только два языка, то вроде как все что больше chr(127) попадает в локализацию языка.
Для UTF вроде как выше chr(1024).
Как перенести значение из 4-х байтового поля в два 2-х байтовых?
ну типа
есть ra=0x11223344
а надо получить
ra1=0x1122
ra2=0x3344
ну типа
есть ra=0x11223344
а надо получить
ra1=0x1122
ra2=0x3344
ra2 = *((short int*)(&ra));
ra1 = *(((short int*)(&ra))+1);
Добавлено:
это для порядка байт little-endian, для big-endian:
ra1 = *((short int*)(&ra));
ra2 = *(((short int*)(&ra))+1);
ra1 = *(((short int*)(&ra))+1);
Добавлено:
это для порядка байт little-endian, для big-endian:
ra1 = *((short int*)(&ra));
ra2 = *(((short int*)(&ra))+1);
mbku
как-то так
ra1 = (ra >> 16) & 0x0000FFFF;
ra2 = ra & 0x0000FFFF;
как-то так
ra1 = (ra >> 16) & 0x0000FFFF;
ra2 = ra & 0x0000FFFF;
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
Предыдущая тема: не знаю как назвать тему :-)
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.