[personal profile] dememax
void MediaLookupTable::generateNewName(char* mediumName,
				       unsigned /*maxLen*/) {
  // We should really use snprintf() here, but not all systems have it
  sprintf(mediumName, "liveMedia%d", fNameGenerator++);
}

Date: 2016-04-28 10:54 am (UTC)
From: [personal profile] alll
Вот так и рушатся цивилизации. ;)
From: [identity profile] itman.livejournal.com
А ведь есть на такой случай стримы. А поцаны-то не знали. Не, ну я понимаю, что они тормознутые, но разве в этом месте важна скорость?
From: (Anonymous)
>Ой, Лёня, не суди их строго, задним умом - мы все гении. :-)

Это правда, Си++, кстати, у людей вызывает большую аллергию, отсюда все эти printf и пр в исходниках. Если бы язык развивался бы с нуля, не было всего этого. Но у меня нет для вас паралелльной вселенной. Скорее всего, эти экзерсисы будут медленно и мучительно умирать вместе с кодом, который, скажем, в 2030-ом году не будет собираться, если в нем есть printf, sprintf, и пр... Предвижу, правда, кудесников, которые напишут библиотечки с printf, sprintf...

Date: 2016-04-28 08:33 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
Как-то странно видеть классы и спринтф в одном коде )

Date: 2016-04-28 08:34 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
а, понял, прочитал комменты
From: [identity profile] fatoff.livejournal.com
but not all systems have it

Not all compilers? How old that compiler in the system is?

Re: ffmpeg & live555

Date: 2016-04-29 08:41 am (UTC)
From: [identity profile] vaddimka.livejournal.com
live555 не помню, в ффмпеге копался да
From: [identity profile] fatoff.livejournal.com
В Windows sprintf точно не из системы, а из конкретного сишного рантайма, который либо динамически, либо статически линкован с исполняемым модулем.

В Linux, как понимаю, раз можно хостить более одного компилятора, тоже не часть системы?

Re: ffmpeg & live555

Date: 2016-04-29 09:03 am (UTC)
From: [identity profile] vaddimka.livejournal.com
Я примерно полтора года как напрямую видео не занимаюсь, приходилось на броадкастиг стандарты смотреть, но не более.
С RTP не работал, он мне не нравится, реализовывал свои решения для коррекции потерь при передаче и т.п.

Date: 2016-04-30 02:03 am (UTC)
From: [identity profile] great-mahatma.livejournal.com
Абсолютно нормально, всегда так делаю. Не пользоваться же этими убогими istream, ostream и не менее уродливыми << и >>. Руки бы оторвал не только тому, кто использует исключительно потоки, но и тому, кому в голову пришла безумно шизофреническая мысль вообще придумать подобное уродство.

Date: 2016-04-30 05:31 am (UTC)
From: [identity profile] vaddimka.livejournal.com
Я очень надеюсь что вы при этом используете snprintf :)

Date: 2016-04-30 06:24 am (UTC)
From: [identity profile] great-mahatma.livejournal.com
Ну это естественно и это само собой, snprintf тут наше всё.

И возвращаясь к потокам. Программа (если это можно назвать программой) делает две абсолютно одинаковые вещи. Первая через стандартный И НАШЕ ВСЁ printf, а вторая через потоки, по всем канонам C++:

-+-
#include
#include
#include

using namespace std;

int main()
{
int i = 0x1234abcd;
printf("0x%016X (%d)\n", i, i);

cout << "0x"
<< setfill('0')
<< setw(16)
<< hex
<< uppercase
<< i
<< " ("
<< dec
<< i
<< ")"
<< endl;
return 0;
}
-+-

Внимание, вопрос! Какой вариант предпочтёт нормальный и адекватный человек? А какой вариант предпочтёт больной C++ человек с ярко выраженным фимозом мозга?

Сколько я не видел учебников по C++ (начиная с самого Страуструпа, да) складывается впечатление что их пишут/писали как раз шизофреники, навязчиво навязывая всем вновь обращённым неофитам пользоваться этим << и >> уродством.

Date: 2016-04-30 06:27 am (UTC)
From: [identity profile] great-mahatma.livejournal.com
Как в этом ЖЖ делать так чтобы он даже не пытался форматировать то, что было отформатировано до него? Убрал, гад, все мои красивые отступы в предыдущем сообщении и выровнял всё по левому краю, придурок! Да ещё всё что было include поубивал вместе с угловыми скобками, все cstdio, iomanip и iostream, урод!
Edited Date: 2016-04-30 06:29 am (UTC)

Date: 2016-04-30 06:57 am (UTC)
From: [identity profile] vaddimka.livejournal.com
для этого тег
    обычно работает

:)

Date: 2016-04-30 06:58 am (UTC)
From: [identity profile] vaddimka.livejournal.com
* тег pre :))

Date: 2016-04-30 07:07 am (UTC)
From: [identity profile] vaddimka.livejournal.com
практика показывает, что для большей части кода, логгинга там например, стримы вполне себе окей, потому что позволяют не думать о типе переменной. пишешь себе в поток и пишешь. если где-то с типами проблема - компилятор скажет ошибку, а не ворнинг. и это хорошо, потому что есть компиляторы которые не пишут ворнинги, и скажем в случае какой редкой ошибки, аппликация просто упадет на попытке сделать спринтф с кривыми параметрами, а не напишет бяку в лог

я не считаю стримы вершиной удобства, файловые стримы вообще достаточно неудобны, но прямо так отказываться от них тоже смысла мало, в конце концов оператор << никто не монополизировал, любой волен сделать там конкатенацию или что еще в любом удобном для него виде, без использования STL например

поэтому snprintf/printf все-таки скорее пережиток прошлого, который если и использовать, то четко понимая почему и зачем. плюс, те же аргументы при переходе с 32-бит на 64 (size_t anyone?) нужно кастовать в определенный тип чтобы использовать в принтфах, неудобно и опять-таки дает возможность программисту ошибиться

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

Date: 2016-04-30 08:30 am (UTC)
From: [identity profile] great-mahatma.livejournal.com
А ну-ка проверю работает или нет...

#include 
#include 
#include 

using namespace std;

int main()
{
    int i = 0x1234abcd;
    printf("0x%016X (%d)\n", i, i);

    cout << "0x"
         << setfill('0')
         << setw(16)
         << hex
         << uppercase
         << i
         << " ("
         << dec
         << i
         << ")"
         << endl;
    return 0;
}


В режиме "ПРОСМОТР" сработало. Как запостится уж не знаю.

Date: 2016-04-30 08:35 am (UTC)
From: [identity profile] great-mahatma.livejournal.com
В своих проектах я один ;-) А когда я был не один (давно это было) на C++ вообще ничего не делалось, только pure C, только хардкор! Но стримы я считал и считаю порождением сатаны. Нужно и должно кастовать всё правильно, тогда и проблем не будет.

Date: 2016-04-30 10:41 am (UTC)
From: [identity profile] madf.livejournal.com
Прямо вот как у меня на работе :)
Особенно доставляют у нас template-free доморощенные контейнеры (у них у всех суффикс TF, шобы значимее!) в которых все через ж... То есть через void* и веру.

Date: 2016-04-30 10:42 am (UTC)
From: [identity profile] madf.livejournal.com
Кстати по поводу „not all systems have it“. У меня есть живой пример системы которая не умеет double гнать в std::ostream. И не такая она и старая — где-то из 2006-го года родом.
From: [identity profile] great-mahatma.livejournal.com
Я обычно делаю


if (!strcmp(s.c_str(), "abc")


когда s типа string, и не в моей библиотеке, и исходников нет чтобы string заменить на религиозно правильный char* Мне так нравится.
From: [identity profile] great-mahatma.livejournal.com
Ну фотографии как цветёт цветная капуста в Марселе или как ползают сороконогие червячки в окрестностях Парижа лично я комментировать не берусь, я от этого далёк чуть дальше, чем от балета, а от балета я дальше, чем от Луны. А вот где я хоть что-то понимаю, то почему бы и не поговорить на эту тему?
From: [identity profile] madf.livejournal.com
Именно что легаси. На них вся система завязана, а это почти гигабайт исходных кодов...
From: [identity profile] fatoff.livejournal.com
Меня удивляет, как Линукс при всё разброде и шатании сохраняет логическую цельность. Типа, притащил в систему позиксную программу в исходном коде с зависимостями только от C runtime, компилируй, запуская.

Profile

dememax

May 2023

S M T W T F S
 123456
78910111213
14151617181920
21 2223 24252627
28293031   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 22nd, 2025 07:26 am
Powered by Dreamwidth Studios