Ошибки, баги, вопросы - страница 2417
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я в курсе, что не компилируется. Речь идёт о проверке синтаксиса (что в ME тоже называется термином "Компилировать"), ведь я в прошлом посте даже уточнил это в скобках. Если в компиляторе C++ тоже запустить проверку синтаксиса (через командную строку обычно), то он будет ругаться как миленький.
Смотрите, если не указать:
то C++ отлично компилирует данный код. Значит синтаксис верен. Проблема начинается на уровне создания объектников, потому что именно там будут аллоцироваться объекты классов.
Просто представьте себе template, который вы ну никак не проверите на использование в хэдере. Что должен делать компилятор в данном случае? Или, допустим, надо std:lower реализовать для структуры, и в *.h нет реализации... Тоже компилятор не должен ругаться на этапе проверки же.
Можете уточнить, как из командной строки вы проверяете синтаксис для *.h чтобы ругалось на данный код? Интересно стало)
Смотрите, если не указать:
то C++ отлично компилирует данный код. Значит синтаксис верен.
Интересная у вас логика ) А если вообще удалить весь код, значит синтаксис ещё более верен? ) Я привёл конкретный код. Речи не шло о том, что именно класс B некорректен. Его вполне можно использовать для вызова статических методов и т.д.
Просто представьте себе template, который вы ну никак не проверите на использование в хэдере. Что должен делать компилятор в данном случае?
Не стоит подменять понятия. Шаблон проверяется только в момент его раскрытия конкретными типами, это понятное дело.
Можете уточнить, как из командной строки вы проверяете синтаксис для *.h чтобы ругалось на данный код? Интересно стало)
Тут я не подскажу, т.к. не стал заморачиваться с такими бубнами, а написал себе макрос для VS, делающий компиляцию хедера. Для этого он на лету переключает режим текущего документа на cpp, проводит компиляцию, затем возвращает обратно. Простенько и со вкусом.
Мне вообще не понятно, почему в студии нет нормальной штатной опции для проверки синтаксиса хедеров. Правда я пользуюсь довольно старой версией, может уже появилось такое.
Мне вообще не понятно, почему в студии нет нормальной штатной опции для проверки синтаксиса хедеров.
Ctrl+F7 , такое сочетание есть начиная наверное минимум с 2008 студии - компилировать отдельный файл
Долго колебался прежде чем постить, перепроверял свою поделку, но всё-таки с тестером что-то не так...
Прервался тест буквально в начале:
Не меняя ничего, нажимаю "старт" второй раз, проходит до конца (с небольшой паузой в том месте, где прервался) :
Сделал ещё несколько подходов - результаты строго чередуются (один за другим, чёт/нечет). До места "обрыва" графики баланса похожи. Повторюсь, ничего не меняю, только кликаю "Start"
Вероятнее всего это момент, когда добавляет ещё один символ (почему не все 5 с начала теста?):
Оставляя в стороне вопрос фактического наличия памяти (по данным диспетчера задач, свободно 1,2-1,4ГБ, т.е. совпадает с сообщением), не может же быть, что для выполнения одного и того же теста нужно разное количество памяти? Да и если по отчёту достаточно 400Мб, можно три таких теста запустить на 1.2Гб...
Дополнительные данные: тест на 5ти символах, по открытию баров, Н1, 2004...сегодня. В теле 7 массивов double на 500 элементов и один маленький массив-структура (хранит данные для каждого символа, т.е. в данном случае 5 х 13), размеры задаются при инициализации и больше не меняются, т.е. просто нечему пожирать память. Код процедурный, простенький, маленький, без рекурсий и подключаемых библиотек.
На четырёх символах - работает, на 6-7-8 - та же история, что на 5ти - через раз. При этом первый раз после добавления нового символа - всегда проходит, следующий - нет, потом опять проходит и т.д.
Есть подозрения, что память не высвобождается своевременно, только наличие ошибки, связанной с её нехваткой.
Итого 3 проблемы:
Речь шла о хедерах. А данное сочетание относится к cpp. По крайней мере у меня в 2010 студии так.
Почему это запрещено?
Почему это запрещено?
так повелось издревле. литералы только по значению. почему - хз, надо разрабов спрашивать
Передача параметра по ссылке предполагает наличие переменной, распределённой в памяти.
Константы же нигде не хранятся, а используются непосредственно.
так повелось издревле. литералы только по значению. почему - хз, надо разрабов спрашивать
В угоду мазохистам. Стандартная билиотека не впечатлила, решил написать подобие vector, но из-за обилия "фишечек" получается ещё одна недоподелка.