1. C++ / Говнокод #3769

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    BYTE p1,p2,p3,p4;
    CString p;
    ipa.GetAddress(p1,p2,p3,p4);
    p.Format("%d.", p1);
    s = p;
    p.Format("%d.", p2);
    s += p;
    p.Format("%d.", p3);
    s += p;
    p.Format("%d", p4);
    s += p;
    AfxMessageBox(s);

    книга "Microsoft Visual Studio и MFC", автор Т. Сидорина
    ранее были объявлены
    CIPAddressCtrl ipa;
    CString s;

    s.Format ("%d.%d.%d.%d", p1, p2, p3, p4); //мы не исчем лёгких путей

    Запостил: daemon_master, 23 Июля 2010

    Комментарии (12) RSS

    • Оператор += наше всё! Руки прочь!
      зі: а что, Format принимает 5 аргументов? У Т. Сидориной же 2 написано!
      Ответить
      • он принимает бесконечное число параметров ) минимум 1
        Ответить
        • Я должен дописывать "Сарказм"?
          Ответить
        • Кстати, не уверен, но по-моему не совсем бесконечное..
          Ответить
          • http://msdn.microsoft.com/en-us/library/aa314327(VS.60).aspx

            убедил?
            Ответить
            • Во1 я не утверждал.
              Во2 я говорил не про "Format" MFC с которым я не работал и не собираюсь, а про varargs, поддержка которого имеется в стандартной библиотеке (например, printf).
              В3 существуют различия в реализации этого на win и nix платформах. Какие -- не помню, но помню что они есть.
              Так что не убедил.
              Ответить
              • а как ты думаешь Format работает? по такому же принципу как и sprintf и printf, и даже таже TRACE в MFC

                #define N 512
                
                void TRACE (LPCTSTR lpszFormat, ...)
                {
                	va_list args;
                	va_start (args, lpszFormat);
                	int nBuf;
                	char szBuffer[N];
                
                	nBuf = _vsnprintf (szBuffer, N, lpszFormat, args);
                
                	if (nBuf < 0)
                	{
                		MessageBox (NULL, "Слишком длинная строка для TRACE!", "Ошибка", MB_OK | MB_ICONSTOP);
                		szBuffer[N - 2] = '\n';
                		szBuffer[N - 1] = 0;
                	}
                
                	OutputDebugString (szBuffer);
                
                	va_end (args);
                }


                как пример реализация типа того же TRACE
                Ответить
                • Я знаю как работает принтф. Что ты доказал приведенным кодом?
                  Ответить
                  • а я пытался разве что-то доказать? показал лишь пример работы va_list
                    Ответить
                    • Я писал функции с вараргами, я все это себе нормально представляю. Забей, я походу просто суть разговора не догоняю, туплю.
                      Ответить
    • а чему вы удивляетесь? это же книга. Больше строчек - больше профита пейсателю
      Ответить
    • А что, разве кроме Олиферов и Гука еще кто-то отечественный пишет про компы?
      Ответить

    Добавить комментарий