|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
что-то я наткнулся на непонятку внезапно... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
ЧЯДНТ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 05:04 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
По выходу из функции, все объекты объявленные внутри нее - уничтожаются. То есть когда ты пытаешься вернуть str.c_str() ты возвращаешь указатель на внутренний буффер уничтоженного объекта. А когда возвращаешь весь объект целиком - он возвращается через копирование. Объект str лежащий на стеке функции _out() уничтожается, но перед этим делается копирование в объект str лежащий на стеке функции main(). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 05:41 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Зря ломаешь копья. Это не С. Это С++. Компилятор поправит твой код и он будет выглядить примерно вот так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 11:06 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
OoCc, увеличивать область видимости для того, что бы работали костылики - это очень плохой подход. язык си плас плас объектно ориентированный. соответственно впереди ОО а потом уже технологии, языки, конкретные тех. решения. а не наоборот. правильная подсказка была бы с передачей функции ссылки на параметр из вызывающего слоя. тогда логика понятна - функция работает с той переменной, жизнь которой определяет вызывающий. (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 11:42 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух, Все компиляторы оптимизируют это устраняя копирование возвращаемого значения, и по факту функция работает с тем экземпляром куда результат присваивается в вызывающем коде (RVO). А начиная с С++17 это обязательное поведение. Так что можете спокойно возвращать строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 12:38 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Какая необходимость в прикладном коде использовать ASCIIZ ? Вообще нету. Нет я могу придумать кейс ТОЛЬКО когда тебе надо вызвать функцию операционной системы и она (эта функция) не имплементирована в твоей прикладной библиотеке или фреймворке вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 12:49 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
kolobok0 OoCc, увеличивать область видимости для того, что бы работали костылики - это очень плохой подход. язык си плас плас объектно ориентированный. соответственно впереди ОО а потом уже технологии, языки, конкретные тех. решения. а не наоборот. правильная подсказка была бы с передачей функции ссылки на параметр из вызывающего слоя. тогда логика понятна - функция работает с той переменной, жизнь которой определяет вызывающий. (круглый) Я не призываю писать такой код. Компилятор это сделает сам. И совсем не обязательно именно такой. Мой поинт был чтобы полудух не заморачивался и не думал за компилятор слишком много. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 13:26 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
OoCc Зря ломаешь копья. Это не С. Это С++. Компилятор поправит твой код и он будет выглядить примерно вот так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
и что тут возвращает компилятор?! как str попал в main() ? mayton Какая необходимость в прикладном коде использовать ASCIIZ ? Вообще нету. Нет я могу придумать кейс ТОЛЬКО когда тебе надо вызвать функцию операционной системы и она (эта функция) не имплементирована в твоей прикладной библиотеке или фреймворке вообще. имеешь ввиду, зачем связываться с char* ? чтобы отправить в socket конкретно - в send() ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 15:56 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух mayton Какая необходимость в прикладном коде использовать ASCIIZ ? Вообще нету. Нет я могу придумать кейс ТОЛЬКО когда тебе надо вызвать функцию операционной системы и она (эта функция) не имплементирована в твоей прикладной библиотеке или фреймворке вообще. имеешь ввиду, зачем связываться с char* ? чтобы отправить в socket конкретно - в send() Что за протокол? Raw? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 16:12 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
да обычный стек TCP/IP (AF_INET) надо клиент-серверную архитектуру организовать на C++ как это ещё сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 16:22 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Я пытаюсь понять - это прикладное или системное программирование? Если системное - то у меня нет вопросов и я удаляюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 16:24 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
ну очевидно же, что это низкоуровневый задел а ты с сокетами через boost::asio ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 16:42 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Я с сокетами уже 15 лет вообще никак. Я - прикладник. У меня - Soap/Http/Rest/GraphQL. Из самого низкоуровневого был SNMP. Это - ближе всего к пакетам. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:05 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Http - это сокеты ) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:28 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Нифига. Это прикладной API. И в его интерфейсе нет никакого send и нет никаких сокетов. Вот типичный http-вызов. Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:35 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton Нифига. Это прикладной API. И в его интерфейсе нет никакого send и нет никаких сокетов. Вот типичный http-вызов. Код: plaintext 1. 2. 3.
Ссылка крутая. Но ГуглТранслейт не справился со словом "Fucken". Это Вы где вычитали? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:39 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
А зачем вы гуглите то что я пишу? Что там гуглить? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:46 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton А зачем вы гуглите то что я пишу? Что там гуглить? Я просто впервые увидел такое слово. Но справился другой переводчик. Значение слова -- как и ожидалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:51 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton Нифига. Это прикладной API. И в его интерфейсе нет никакого send и нет никаких сокетов. Вот типичный http-вызов. Код: plaintext 1. 2. 3.
ну конечно в интерфейсе нет но технически ты работаешь с сокетом т.е. на мой вопрос "как ты работаешь с сокетами" есть ответ - через API ну т.е. тот же самый boost::asio, только другой API хотя там внутри как раз он и может оказаться ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 17:58 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух mayton Нифига. Это прикладной API. И в его интерфейсе нет никакого send и нет никаких сокетов. Вот типичный http-вызов. Код: plaintext 1. 2. 3.
ну конечно в интерфейсе нет но технически ты работаешь с сокетом т.е. на мой вопрос "как ты работаешь с сокетами" есть ответ - через API ну т.е. тот же самый boost::asio, только другой API хотя там внутри как раз он и может оказаться Когда мы говорил об ASCIIZ я имел в виду что на прикладном уровне (а Http - это уже прикладной) вам не нужны примитивы ОС, сокеты, или не дай бох блочные или символьные устройства. Это всё - завёрнуто в библиотеки и наружу выходят std::string как базовый тип данных для представления бизнес-информации. 99% это так. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:06 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
да, и это правильно - использовать готовые библиотеки, а не городить свои меньше кода = меньше ошибок и я сам к этому стремлюсь но не всегда получается... а ведь string приходится копировать в char* ? именно copy всей строки надо будет сделать, чтобы в сокет передать... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:19 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Как это соотносится с непониманием времени жизни переменной? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:22 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух да, и это правильно - использовать готовые библиотеки, а не городить свои меньше кода = меньше ошибок и я сам к этому стремлюсь но не всегда получается... Я рекомендую всячески сопротивляться добавлению в проект каждой новой библиотеки. Это от разработчика PVS Studio, я согласен абсолютно -- с каждым символом. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:25 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудухи что тут возвращает компилятор?! как str попал в main() ? Ты меня спрашиваешь? Это твой код. полудухда обычный стек TCP/IP (AF_INET) надо клиент-серверную архитектуру организовать на C++ как это ещё сделать? Найти человека который знает и умеет это делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:31 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
petrav полудух да, и это правильно - использовать готовые библиотеки, а не городить свои меньше кода = меньше ошибок и я сам к этому стремлюсь но не всегда получается... Я рекомендую всячески сопротивляться добавлению в проект каждой новой библиотеки. Это от разработчика PVS Studio, я согласен абсолютно -- с каждым символом. Не согласен с точкой зрения. Она - архаична. И ее можно было реплицировать еще в середине 20-го века когда любой программный продукт был железом+ОС+приложением 3 в одном. Современный программный продукт - это зачастую на 90% идея, воплощённая в интеграции системных средств или платформ Amazon/Google/Azure и собственно вашего кода. Которого обычно мало. Ваш код - это по сути клей который склеивает готовые решения в одно. Подход когда вы пилите и свой HttpClient и свой (не дай бох) более сложный драйвер - отбрасывает вас во времени на много спринтов назад и при таком подходе ваши конкуренты вас обойдут и выдадут работающий прототип. Последнее - очень важно. Кто первый вышел на рынок - тот победитель. Сидельцы и народные умельнцы - здесь обычно остаются за бортом. Они - вне рынка ПО. Они неинтересны потому-что они задержались и поезд ушел. Поэтому я очень сильно не поддерживаю С++ - ников в их желании иметь свой "свечной заводик" на любой случай жизни. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:35 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
maytonПоследнее - очень важно. Кто первый вышел на рынок - тот победитель. Стратегия "быстро хапнуть бабла и свалить в закат" - вечна. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:40 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonПоследнее - очень важно. Кто первый вышел на рынок - тот победитель. Стратегия "быстро хапнуть бабла и свалить в закат" - вечна. Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:40 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton petrav пропущено... Я рекомендую всячески сопротивляться добавлению в проект каждой новой библиотеки. Это от разработчика PVS Studio, я согласен абсолютно -- с каждым символом. Не согласен с точкой зрения. Она - архаична. И ее можно было реплицировать еще в середине 20-го века когда любой программный продукт был железом+ОС+приложением 3 в одном. Современный программный продукт - это зачастую на 90% идея, воплощённая в интеграции системных средств или платформ Amazon/Google/Azure и собственно вашего кода. Которого обычно мало. Ваш код - это по сути клей который склеивает готовые решения в одно. Подход когда вы пилите и свой HttpClient и свой (не дай бох) более сложный драйвер - отбрасывает вас во времени на много спринтов назад и при таком подходе ваши конкуренты вас обойдут и выдадут работающий прототип. Последнее - очень важно. Кто первый вышел на рынок - тот победитель. Сидельцы и народные умельнцы - здесь обычно остаются за бортом. Они - вне рынка ПО. Они неинтересны потому-что они задержались и поезд ушел. Поэтому я очень сильно не поддерживаю С++ - ников в их желании иметь свой "свечной заводик" на любой случай жизни. Вы просто не прочитали раздел на который я дал ссылку. Или прочитали, но не поняли что там написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:46 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
maytonПоследнее - очень важно. Кто первый вышел на рынок - тот победитель. Совсем не обязательно. Если рынок продукта небольшой тогда и нет смысла рвать когти и переплачивать за разработку в 24-7 режиме. А если большой то место всем хватит, главное чтобы костюмчик сидел продукт был достойный. И тут наоборот, попытка будет только одна и вывести нужно действительно конкурентноспособный продукт. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:48 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Я давно слежу за продуктами PVS. Но их создатели изначально находились в невыгодном стартовом положении. Они анализировали самый тяжелый и самый сложный компиллятор в мире. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 18:58 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton Я давно слежу за продуктами PVS. Но их создатели изначально находились в невыгодном стартовом положении. Они анализировали самый тяжелый и самый сложный компиллятор в мире. Компилятор? Наверное язык? Но кто-то же должен его анализировать. Продукт очень качественный, мирового уровня и отечественный. Повод для гордости. mayton Подход когда вы пилите и свой HttpClient и свой (не дай бох) более сложный драйвер - отбрасывает вас во времени на много спринтов назад и при таком подходе ваши конкуренты вас обойдут и выдадут работающий прототип. Почитайте внимательнее статью. Автор как раз и не советует писать свой HttpClient. А Вы, почему-то, прочитали, что советует... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 19:06 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton, Кстати, у меня только что слетела возможность редактировать свои посты. Меня что забанили? Во, теперь вернулась. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 19:18 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonПоследнее - очень важно. Кто первый вышел на рынок - тот победитель. Стратегия "быстро хапнуть бабла и свалить в закат" - вечна. эта стратегия всегда ведёт к саморазрушению и деградации т.е. что в итоге получает человек? бухает и жрёт = забивает на развитие и разлагается т.о. она то вечна, но вообще-то у неё довольно предсказуемый и глобальный конец (для всего рода, потому что дети, которых не научили добывать/создавать ресурсы - обречены). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 19:25 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
OoCc полудухи что тут возвращает компилятор?! как str попал в main() ? Ты меня спрашиваешь? Это твой код. мой код возвращал str, а твой ничего не возвращает ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 19:38 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
petrav mayton Я давно слежу за продуктами PVS. Но их создатели изначально находились в невыгодном стартовом положении. Они анализировали самый тяжелый и самый сложный компиллятор в мире. Компилятор? Наверное язык? Но кто-то же должен его анализировать. Продукт очень качественный, мирового уровня и отечественный. Повод для гордости. Я думаю что я все таки не ошибся. Очень много вопросов языка С++ крутятся вокруг компиллятора. А именно его контрактов по отношению к реализации в bare-metal. Я-бы даже сказал что у меня есть личная претезия именно к компилляторам. Сказать что они сложны - это значит не сказать ничего. Сказать что до сих пор есть сложные соглашения по поводу типов int/char и по поводу того в какую разрядность они будут собраны. Замечу что этому вопросу 100 лет в обед. И большая часть вопросов новичков крутятся вокруг "некой слепоты" касаемой разрядностей и платформ. Фактически наработка опыта в С++ должна проходить не через язык а через систему. Железо. ОС. И компилляторы. Вы не можете считаться опытным С++ кодером просто зная С++. Собственно это знание вам не дает ничего. Вы должны носом пропахать практику и поймать грабли разрядности чтобы понять что здесь будет padding структуры. А здесь символ будет покрывать диапазон 1 байта. Просто таковы условия. Такой глубины неопределённости уже давно нет в смежных языках и технологиях. Тип данных - это главный строительный цемент. И очень странно что этому вопросу уделяют мало внимания в комитетах. За 40 лет практически не было сколь заметных улучшений строгости базовой спеки. Более того существуют сильно болшие различия в Microsoft C++/Gnu Compiller Collection которые тоже не решаются на уровне спеки языка а решаются где-то сбоку. Макросы, директивы компиллятора, опции командной строки. Такого ужаса не существовало в других компилляторах. Они были более предсказемы. Ну и тип данных строка о котором я говорю уже давно. Я говорю - комитет - утверди string как фундаментальную единицу компилляции и выброси все библиотечные строки. Вобщем нечего гордиться. Нет предмета гордости. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 20:03 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton Макросы, директивы компиллятора, опции командной строки. Такого ужаса не существовало в других компилляторах. Они были более предсказуемы. Ну и тип данных строка о котором я говорю уже давно. Да... так и есть. Но, во-первых, у нас выбора нет. Хотя можно найти другую работу. Никто не спорит, что тут у нас в C++ помимо красоты языка, ещё и куча кривизны и костылей. Но статья, которую я процитировал, в общем, универсальна. И касается всех языков программирования. А автор советует не разрабатывать HttpClient. Я точно так же видел как отваливается половина сложнейшего приложения на .NET. После обновления Студии. Что-то связанное с удалённым созданием объектов на сервере логики. Хотя использование этого компонента .NET было правильным. В смысле, что мы его и использовали правильно, и правильным было то, что мы его использовали. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 20:30 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky полудух, Все компиляторы оптимизируют это устраняя копирование возвращаемого значения, и по факту функция работает с тем экземпляром куда результат присваивается в вызывающем коде (RVO). А начиная с С++17 это обязательное поведение. Так что можете спокойно возвращать строку. а когда я делаю str.c_str() снаружи, таки копирования не происходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 20:39 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух а когда я делаю str.c_str() снаружи, таки копирования не происходит? А если сделать str.c_str() снаружи, а потом str.c_str() сделать внутри? Вот как думаешь, что случится? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 20:50 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
"внутрей" к тому времени уже не будет оттуда return был ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 21:05 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух "внутрей" к тому времени уже не будет оттуда return был При большом желании можно и в "нутря" вернуться == std::longjmp. Московский утверждает, что та переменная типа std::string на самом деле будет создана на стеке функции main() и никакого копирования строки не будет. А раз она создана там, то там и создана. И дальше можно делать хоть в c_str() - да хоть куда. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 21:13 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
petrav полудух "внутрей" к тому времени уже не будет оттуда return был При большом желании можно и в "нутря" вернуться == std::longjmp. Московский утверждает, что та переменная типа std::string на самом деле будет создана на стеке функции main() и никакого копирования строки не будет. А раз она создана там, то там и создана. И дальше можно делать хоть в c_str() - да хоть куда. спасибо, кэп, я спрашивал про другое - делает ли c_str() копирование, когда преобразует string в char*? технически ведь он ничего не преобразует, там внутрях тот же char*... он его мувает наружу, или указатель вертает, или как? в коде вроде указатель: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Return const pointer to null-terminated contents. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 21:30 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух спасибо, кэп, я спрашивал про другое - делает ли c_str() копирование, когда преобразует string в char*? технически ведь он ничего не преобразует, там внутрях тот же char*... он его мувает наружу, или указатель вертает, или как? Короче, дело так обстоит. Код, конечно, прототипный и заведомо неверный. Но концептуально правильный. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Никакого копирования не происходит. c_str() это доступ к внутреннему буферу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 21:43 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудух, Точно также как и std::vector::data() и std::array::data() -- просто возвращают указатели на внутренние буферы, больше ничего не происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 21:56 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
ясно, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2020, 22:47 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton petrav пропущено... Компилятор? Наверное язык? Но кто-то же должен его анализировать. Продукт очень качественный, мирового уровня и отечественный. Повод для гордости. Вобщем нечего гордиться. Нет предмета гордости. Да вот ещё... Вы интересно повернули вопрос о предмете гордости. ООО «Системы программной верификации» российская компания? PVS Studio российская разработка? Я думаю это качественный продукт и повод для гордости, если они из РФ. А далее Вы приводите разгромную критику языка C++ и компиляторов С++. А ещё далее Вы делаете вывод, что гордится нечем, нет предмета гордости. Ну понятно. Один вопрос, язык С++ и компиляторы проектировала и разрабатывала тоже ООО «Системы программной верификации» из РФ ?! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2020, 00:28 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Да я не про PVS. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2020, 14:57 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
PVS-Studio, кстати, даже Джон Кармак (id Software) активно юзает (4:10) я почитал блог PVS , действительно хорошая штука ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 19:02 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
В идеале компиллятор должен и выполнять эти функции. А мы должны просто читать внимательно WARNINGs а не игнорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2020, 19:24 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
похоже такой крутой разбор текста не может сделать таже команда, которая разрабатывает логику компилятора т.е. тупо с ассемблером работает нужна отдельная команда ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2020, 10:06 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton В идеале компиллятор должен и выполнять эти функции. Вообще-то не должен. Задача компилятора генерировать код. Функция анализа кода это задача IDE. Не говоря уже о том что очень много ложных срабатываний для работы с которыми нужна интерактивность. Т.е. компилятор тут никаким боком. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2020, 13:11 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Я просто акцентирую внимание на том что есть тривиальные чеки (типизация и разыменование wild/null) указателя которую тоже статик-анализатор анализирует но ее-же (эту-же проверку) делает компиллятор (практически всегда) и пишет варнинги. Просто мы эти варнинги игнорируем. Вобщем - толкую о том что не надо с придыханием говорить о статик-анализе. Большая часть проблем была видна гораздо раньше. Просто в нее не смотрели. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2020, 13:40 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky mayton В идеале компиллятор должен и выполнять эти функции. Вообще-то не должен. Задача компилятора генерировать код. Спорное утверждение. Зачем тогда вообще компилятор выдаёт предупреждения, если можно просто генерировать бинарный код? Anatoly Moskovsky Функция анализа кода это задача IDE. Не согласен. Задача IDE -- это текстовый редактор с поддержкой остальных инструментов: система сборки, взаимодействие с отладчиком, дополнительные аддоны. Anatoly Moskovsky Не говоря уже о том что очень много ложных срабатываний для работы с которыми нужна интерактивность. Т.е. компилятор тут никаким боком. Какие ложные срабатывания? Тут задача тривиального анализа врапперов вокруг printf(). С ней справляется gcc, Студия тоже справляется но... через непотребство. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2020, 14:15 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Я немного перепутал топики. Прошу прощения. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2020, 14:27 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
mayton Просто мы эти варнинги игнорируем. всмысле игнорируем? Я если вижу красненькое, то сразу правлю. Это же лютое распиздяйство - красненькое игнорировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2020, 20:14 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky полудух, Все компиляторы оптимизируют это устраняя копирование возвращаемого значения, и по факту функция работает с тем экземпляром куда результат присваивается в вызывающем коде (RVO). А начиная с С++17 это обязательное поведение. Так что можете спокойно возвращать строку. а почему тут сработает? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 09:52 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
полудуха почему тут сработает? https://en.cppreference.com/w/cpp/language/lifetime Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 12:24 |
|
return str.c_str() не пашет
|
|||
---|---|---|---|
#18+
что-то многовато там фраз Undefined behavior... куда смотреть то? объект всё ещё жив, но функция то внутри него оживает только в момент вызова и заканчивается по достижении } а потом снова оживает новая ф-я в момент вызова т.е. она не отличается от обычной ф-и в этом плане ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 21:02 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017432]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
others: | 268ms |
total: | 410ms |
0 / 0 |