Ответы пользователя по тегу C++
  • Отличие Visual C++ от C++?

    Ogra
    @Ogra
    Есть абстрактный, «Сферический С++ в вакууме». Есть ANSI (или ISO, не помню) стандарты на фичи и поведение. В том числе и пресловутый «undefined behaviour» (неопределенное поведение).

    Есть конкретные реализации: компиляторы, среды разработки, например, gcc, icc, vc++. Соответственно, каждая из них во-первых, поддерживает стандарт в той или иной степени, а во-вторых по своему реагирует на undefined behaviour.

    Поэтому при написании статей о С++ часто указывают конкретный компилятор или даже версию, в которой все работает.

    Есть еще одна причина: автор, пишущий про С++ просто не знает стандарта языка, никогда не пробовал других компиляторов, и боится сказать «С++». Это просто одно из проявлений «Works for me».
    Ответ написан
    1 комментарий
  • Литература по C++

    Ogra
    @Ogra
    Комментировать
  • Где место звездочки?

    Ogra
    @Ogra
    Посмотрел исходники Firefox.
    В одном файле найдено:
      // Первый вариант встречается, но редко:
      JSObject* obj = nativeWrapperCache->GetWrapper();
    
      // Второй встречается существенно чаще 
      const nsIID *iid = nsnull;
    
      JSContext *cx = nsnull;
      nsGlobalWindow *win = nsGlobalWindow::FromWrapper(wrapper);
    
      // Функция:
      NS_IMETHODIMP nsWindowSH::GetProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx, JSObject *obj, jsid id, jsval *vp, PRBool *_retval){}
    
    
    Ответ написан
    2 комментария
  • Где место звездочки?

    Ogra
    @Ogra
    Первый вариант семантически действительно обозначает отдельный тип. Проблема вот в чем:
    Type a, b,c;
    Type* pA, pB, pC;
    

    В этом коде все выглядит так, будто a, b, c — объекты, а pA, pB, pC — указатели на объекты. На самом же деле указателем является только pA

    Запись по второму варианту является более точной:
    Type a, b,c;
    Type *pA, pB, *pC;
    
    Ответ написан
    3 комментария