dememax ([personal profile] dememax) wrote2016-04-28 12:04 pm

Рабочее, плюсовое, малозначимое, но яркое

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

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

[identity profile] vaddimka.livejournal.com 2016-04-28 08:34 pm (UTC)(link)
а, понял, прочитал комменты

Re: ffmpeg & live555

[identity profile] vaddimka.livejournal.com 2016-04-29 08:41 am (UTC)(link)
live555 не помню, в ффмпеге копался да

Re: ffmpeg & live555

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

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

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

[identity profile] great-mahatma.livejournal.com 2016-04-30 06:24 am (UTC)(link)
Ну это естественно и это само собой, 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++ (начиная с самого Страуструпа, да) складывается впечатление что их пишут/писали как раз шизофреники, навязчиво навязывая всем вновь обращённым неофитам пользоваться этим << и >> уродством.

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

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

:)

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

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

#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;
}


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

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

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

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

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

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

Re: только pure C, только хардкор!

[identity profile] great-mahatma.livejournal.com 2016-05-02 03:03 am (UTC)(link)
Ну фотографии как цветёт цветная капуста в Марселе или как ползают сороконогие червячки в окрестностях Парижа лично я комментировать не берусь, я от этого далёк чуть дальше, чем от балета, а от балета я дальше, чем от Луны. А вот где я хоть что-то понимаю, то почему бы и не поговорить на эту тему?