@ProCxx

Страница 1767 из 2477
Anton
19.02.2018
07:08:33
ну и чудо макросы :)

Matwey
19.02.2018
07:09:39
Лакос приводит пример, когда код #include <iostream.h> #include "wildthing.h" компилится в то время как #include "wildthing.h" #include <iostream.h> нет
Тут как не крути, будет плохо. Во втором случае, ты сможешь потерять #include <iostream>, но продолжить пользоваться его содержимым занесенным через "wildthing" в данную единицу трансляции.

Anatoly
19.02.2018
07:11:28
Третий день идет дискуссия, что порядок - это вопрос стиля

Google
Anton
19.02.2018
07:12:29
четвертые сутки пылают станицы )

Anatoly
19.02.2018
07:14:29
Что порядок может либо ускорить момент обнаружения пропущенного заголовка, либо замедлить. Но в любом случае полагаться на порядок - ошибка.

@narical вчера же об уже поговорили.

Ilia
19.02.2018
07:24:35
Читаю Лакоса. Цитирую: Major design rule: The . c file of every component should include its own . h file as the first substantive line of code. "Говностатья из интернета" тоже называет это "правилом №1". Может, не такая уж она и говностатья?
Ээээ... Видишь ли, не все так однозначно, правил нет. Статью я глянул по диагонали, явно не нашел там ничего стоящего, ты же процитировал не самое важное правило, уцепился в него, и пытаешься на этом основании меня в чем-то обвинят ь. Ещё раз, правил нет. Ты можешь конечно читать книги и статьи и изобретать свои правила, которые может даже и будут "правельными" и будут помогать тебе. Но ещё раз, правил нет.

Joy
19.02.2018
07:26:53
Я вас услышал

Ilia
19.02.2018
07:29:06
По сути есть только два принципа, это не нарушение ODR и своевременное объявление и определение используемых сущностей

Даже пресловутое разделение компоненты на заголовок и исходник не обязательно

Maxim
19.02.2018
07:34:32
Привет всем. Нужна подсказка. В проекте используется сторонняя dll собранная в конфигурации release(с crt линкуется динамиччески). Если я эту release использую в своём проекте с конфигурацией debug, это же не должно привести к каким то проблемам?

Maxim
19.02.2018
07:38:45
Должно. Не 100% но, но должно
а почему? можно в 2х словах. То что так со статическими делать нельзя, я знаю, а почему динамические нельзя?

Egor
19.02.2018
07:39:26
будут две разные кучи, если в либе нет своих аллок/фри то будут краши

Maxim
19.02.2018
07:39:38
буду благодарен за какую то ссылку

Google
Egor
19.02.2018
07:39:50
google.com

Maxim
19.02.2018
07:40:38
Окей, пошел гуглить, спасибо

Berkus
19.02.2018
07:42:01
а вот автор книги Large-scale C++ software design считает иначе и показывает это на примере
он описывает один совершенно конкретный кейс проектирование LARGE SCALE SOFTWARE SYSTEMS

Ilia
19.02.2018
07:42:14
Berkus
19.02.2018
07:42:15
понятно что в проекте до 10,000 файлов можно делать как угодно

И ещё раз, правило не жесткое, иногда такое может работать
ну если каждый модуль выделяет и освобождает память только в своей куче то и ладно

а вот передать пойнтер из одного в другое и там освободить - будет красивый фейрверк

Anatoly
19.02.2018
07:44:44
Maxim
19.02.2018
07:45:18
Расскажи, почему нельзя со статическими.
If you have more than one DLL or EXE, then you may have more than one CRT, whether or not you are using different versions of Visual C++. For example, statically linking the CRT into multiple DLLs can present the same problem. Developers encountering this problem with static CRTs have been instructed to compile with /MD to use the CRT DLL. If your DLLs pass CRT resources across the DLL boundary, you may encounter issues with mismatched CRTs and need to recompile your project with Visual C++. это из msdn, если я правильно понял, то если с crt линкуемся как MD то проблем не должно быть, или я все понял не так?

Oleg
19.02.2018
07:45:28
И ещё раз, правило не жесткое, иногда такое может работать
Че-т звучит как фигня. Собираю проект RelWithDebInfo, лмнкуюсь с релизными либами из дерева. Проблем нет.

Oleg
19.02.2018
07:46:04
Хм, а на линухе эта пробоема есть?

Berkus
19.02.2018
07:49:28
Хм, а на линухе эта пробоема есть?
везде есть, куча - это просто код, если два разных кода используются в двух разных частях программы то это тот самый сценарий

Че-т звучит как фигня. Собираю проект RelWithDebInfo, лмнкуюсь с релизными либами из дерева. Проблем нет.
эээ а причем тут как ты собираешь? релиз + релиз, главное чтобы CRT был один и указатели не кросс-аллоцировались

Google
Aidar
19.02.2018
07:51:04
ртуть в принципе проходит через организм если не застрянет )
Человек в принципе выжевет если не умрет

Berkus
19.02.2018
07:51:34
Человек в принципе выжевет если не умрет
неверно, человек всё равно умрёт

даже если выживет

Ilia
19.02.2018
07:52:11
Хм, а на линухе эта пробоема есть?
В линуксе чаще всего версия CRT зафиксирована глубоко в системе в одном экземпляре и не меняется. А когда что-то собирают, не собирают на одном линуксе под все остальные, хотя это возможно, а обычно под каждую систему делают отдельный пакет под конкретную CRT. В мире Win всё немного не так.

Ostap
19.02.2018
08:04:44
Я никогда проблем с длл/либ не ловил, но хотелось бы узнать о проблеме подробнее. Подскажите какую-то статью или книгу по выше оговоренному вопросу

Ilia
19.02.2018
08:05:48
Зачем тебе это? Простое правило запомни и соблюдай: Все библиотеки должны быть собраны в одной конфигурации.

Aitkazy
19.02.2018
08:08:13
Читаю и вообще не понимаю ничего

Ostap
19.02.2018
08:08:26
Зачем тебе это? Простое правило запомни и соблюдай: Все библиотеки должны быть собраны в одной конфигурации.
Я всё время так и делаю, но делать ссылаясь на то, что "так нужно" не очень круто

Ilia
19.02.2018
08:09:19
Прочитай про ODR.

Alexander
19.02.2018
08:10:23
Ilia
19.02.2018
08:10:48
Aitkazy
19.02.2018
08:10:50
Сложный язык у вас?

Alexander
19.02.2018
08:11:09
Ilia
19.02.2018
08:18:41
Я никогда проблем с длл/либ не ловил, но хотелось бы узнать о проблеме подробнее. Подскажите какую-то статью или книгу по выше оговоренному вопросу
http://siomsystems.com/mixing-visual-studio-versions/ Вот вроде вполне вменяемая статья на эту тему. Но вполне может быть что не самая лучшая.

Ilia
19.02.2018
08:21:30
Ну таких статей много, я уверен, могут быть и лучше.

Эта статья крутится в основном вокруг использования разных CRT в одном приложении. От Debug и от Release. На самом деле это могут быть также просто разные CRT, например, все Release, но разных версий. Или это могут быть экземпляры других общеиспользуемых библиотек.

Maxim
19.02.2018
08:26:48
Но как я понял, если за границу dll не передовать хендлеры и не удалять объекты созданные внутри такой dll за её границей то проблем быть не должно

Google
Maxim
19.02.2018
08:29:07
я имел ввиду file handles, locales and environment variables

Ilia
19.02.2018
08:34:09
Ну как бы да, но там ещё дофига других есть глобальных или скрытых объектов. В CRT и в C++ RT теперь.

Я просто предлагаю вам не зацикливаться на каких-то правилах, а просто посмотреть на проблему шире, чтобы понять её глубинные причины.

Berkus
19.02.2018
08:35:12
да, либы еще таскают скрытый стейт в виде каких-нибудь статических переменных

Maxim
19.02.2018
08:38:21
согласен, так лучше и поступать, это логично линковать дебаг с дебагом, а релиз с релизом. Просто тут столкнулся в проекте с тем что на релизе работает, а если собрать проект с конфигурацией дебаг, не меняя либки, то результат с теми же входными параметрами не тот, который ожидал и вот решил получше разобраться что к чему

Ilia
19.02.2018
08:41:50
Привет всем. Нужна подсказка. В проекте используется сторонняя dll собранная в конфигурации release(с crt линкуется динамиччески). Если я эту release использую в своём проекте с конфигурацией debug, это же не должно привести к каким то проблемам?
Как бы если это твоя библиотека или поставляемая, тебе лучше всять (или собрать) её отладочную версию. Если взять неоткуда, ты можешь надеятся, что эта .dll написана так, что работает с любой CRT в любой конфигурации, (например, не использует CRT вообще). Такое тоже бывает.

Admin
ERROR: S client not available

Pavel
19.02.2018
09:36:52
IDEA: A series of nonverbal algorithm assembly instructions (Score: 100+) Link: http://j.mp/2EyozRL Comments: http://j.mp/2Ezrlq7

zi
19.02.2018
10:07:06
.

Joy
19.02.2018
10:11:43
В supapro мне не ответили (

Подскажите, где можно почитать про юнит-тесты начиная с основ. Гуглил сам, не смог найти "точку входа" - вся найденная информация предполагает, что я уже что-то знаю

Oleg
19.02.2018
10:25:40
http://blog.byndyu.ru/2010/01/tdd.html https://habrahabr.ru/post/169381/ https://tproger.ru/translations/unit-tests-purposes/
TDD - это когда нахуй писать код, давайте лучше еще ебанем тестов(с)

Ilia
19.02.2018
10:28:04
TDD - это когда нахуй писать код, давайте лучше еще ебанем тестов(с)
Ну вообще я абсолютно согласен. Первое (НУЛЕВОЕ!!) чему нужно обучать в TDD — это что тесты являются ВСПОМОГАТЕЛЬНЫМ СРЕДСТВОМ ДЛЯ СОЗДАНИЯ ПО. А не целью жизни разработчика.

Anatoly
19.02.2018
10:29:31
TDD это хороший старт для проектирования API и обзора поляны use case. Возводить их в самоцель - да, зачем? но владеть этой техникой нужно.

Alexander
19.02.2018
10:31:01
всё хорошо в меру, как говорится

Berkus
19.02.2018
10:42:05
TDD - это когда нахуй писать код, давайте лучше еще ебанем тестов(с)
нет, это "нахуй писать лишний код, не имея никакого представления как он будет работать, давайте начнем с описания в тестах его интерфейса и ожидаемого поведения с точки зрения пользователя"

Google
Oleg
19.02.2018
10:46:56
http://theiced.livejournal.com/254704.html

считаю, что тесты - это ок. Но тесты должны покрывать код, а не код писаться для подтверждения работы тестов.

Anatoly
19.02.2018
10:48:17
главное, что этот тезис здесь никто не выдвигал

Berkus
19.02.2018
10:48:42
считаю, что тесты - это ок. Но тесты должны покрывать код, а не код писаться для подтверждения работы тестов.
прочитай то, что я написал, столько раз, сколько необходимо, пока не поймешь

Joy
19.02.2018
10:49:20
во, накидали, спасибо!

Berkus
19.02.2018
10:51:56
дело вкуса.
нет, какого вкуса, прочитай еще раз

в тдд тесты позволяют тебе СОЗДАТЬ минимально необходимый и достаточный АПИ, потом его реализовать так, как его ожидает увидеть пользователь, ну и потом проверять что он продолжает работать, так как ожидает от него пользователь

Oleg
19.02.2018
10:53:05
Я еще раз повторяю - твой коммент - это дело исключительно твоего вкуса и тех приложений, которые ты разрабатывал. В моем случае это никогда а) не нужно и б) не подходит. Поэтому ешь свое tdd ложкой, но не пытайся меня этим кормить

Oleg
19.02.2018
10:59:31
> истинно-верный путь. Программирование - это не церковь. Тут не единственно правильного решения

Anatoly
19.02.2018
11:01:39
> истинно-верный путь. Программирование - это не церковь. Тут не единственно правильного решения
ну тогда ознакомление с TDD ни к чему плохому привести не может. напротив, откроет хороший подход к проектированию API. ну а дальше свой опыт уже введет свою шкалу мер и весов.

Joy
19.02.2018
11:02:26
Я сам разберусь, мне пока "предмет исследования" непонятен. Начиная с того, что делаю я свой проектик - имеет ли смысл делать тесты для него, и КАК ИМЕННО это делается.

Joy
19.02.2018
11:02:56
Пока я регулярно собираю, запускаю и тыкаю всячески кнопочки. Иногда вдруг падает.

Страница 1767 из 2477