Форум программистов, компьютерный форум CyberForum.ru

Документация g++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.70
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
03.03.2010, 12:49     Документация g++ #1
Недавно начал изучать С++, и хочу научиться искать необходимую документацию, опыта в поиске доки не имел, и хочу попросить совет как мне найти доку например для new(компилятор g++) - собственно нужно узнать он генерирует исключительную ситуацию или возвращает нулевой указатель. Искал тут - http://gcc.gnu.org/onlinedocs/gcc-4.4.3/cpp.pdf но ничего не нашел

Прошу не винить за глупый вопрос, просто хочу научиться читать доку. Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2010, 12:49     Документация g++
Посмотрите здесь:

C++ Qt документация Qt
C++ Документация c++
Документация по SDL C++
C++ Иерархия классов документация.
Документация к ПО
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
R0mm
Псевдо программист
 Аватар для R0mm
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
03.03.2010, 12:53     Документация g++ #2
заходите в любой поисковик. я рекомендую google.com
пишите ключевые слова. для данного случая - "c++ new" без кавычек.
смотрите результаты поиска и наслаждаетесь.
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
03.03.2010, 13:06  [ТС]     Документация g++ #3
Цитата Сообщение от R0mm Посмотреть сообщение
заходите в любой поисковик. я рекомендую google.com
пишите ключевые слова. для данного случая - "c++ new" без кавычек.
смотрите результаты поиска и наслаждаетесь.
это понятно, но я ищу именно для g++, читаю сейчас книгу Шилдта, там сказано что в случае неудачи по стандарту new должен возвращать bad_alloc, как тут - http://www.cplusplus.com/reference/std/new/bad_alloc/ , "но не все компиляторы соответствуют стандарту и некоторые возвращают нулевой указатель, что тоже не запрещается", так мне нужно узнать конкретно что возвращает new в g++ и где это искать?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,269
03.03.2010, 16:29     Документация g++ #4
На счёт документации не знаю. Но, я пожалуй, смогу тебе помочь, еесли ты захочешь узнаТь, что именно возвратил очередной вызов gcc
Речь идёт не о чтении документации, а о нескольких лёгких пассах руками. Если заинтересовался- напиши.
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
03.03.2010, 17:40     Документация g++ #5
Цитата Сообщение от norge_goth Посмотреть сообщение
в случае неудачи по стандарту new должен возвращать bad_alloc
так и есть.
за несоответствие стандарту, можно обвинять микрософтстудию и борланд. но не gcc.
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
03.03.2010, 23:35  [ТС]     Документация g++ #6
Цитата Сообщение от kravam Посмотреть сообщение
На счёт документации не знаю. Но, я пожалуй, смогу тебе помочь, еесли ты захочешь узнаТь, что именно возвратил очередной вызов gcc
Речь идёт не о чтении документации, а о нескольких лёгких пассах руками. Если заинтересовался- напиши.
Да конечно, очень хочу для моего развития будет оч полезно внимательно слушаю
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,269
03.03.2010, 23:44     Документация g++ #7
Ну дело собсно в том, что, как заявляют создатели cmd.exe, узнать, что возвращает та или иная команда. довольно легко. Почитать здесь.
ссылки на другие форумы запрещены

Ключевое слово ERRORLEVEL

Более подробно щас писать некогда, футбол выбил из колеи.
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
03.03.2010, 23:47  [ТС]     Документация g++ #8
Цитата Сообщение от kravam Посмотреть сообщение
Более подробно щас писать некогда, футбол выбил из колеи.
а ну эт дело нужное ща буду разбираться
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
03.03.2010, 23:51     Документация g++ #9
Цитата Сообщение от kravam Посмотреть сообщение
Ну дело собсно в том, что, как заявляют создатели cmd.exe, узнать, что возвращает та или иная команда. довольно легко. Почитать здесь.
ссылки на другие форумы запрещены

Ключевое слово ERRORLEVEL

Более подробно щас писать некогда, футбол выбил из колеи.
товарысч, объясните мне плиз, какое отношение имеет cmd.exe к std::bad_alloc ?

Добавлено через 32 секунды
я просто в ступоре
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
04.03.2010, 09:34     Документация g++ #10
kravam, а и в правду не очень понятна связь между значением, возвращаемым программой операционной системе, и значением, возвращаемым вызовом функции внутри программы. Вот к примеру странный код:
C
1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main(void){
    int i = 8 % 7;
    if ( i & 1 )
        return 123;
    return 321;
}
вызвав эту программу можно узнать, какое значение она возвратила:
Код
$ ./return123 
$ echo $?
123
но как узнать, какое значение получила переменная i?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
04.03.2010, 14:36     Документация g++ #11
Топикстартеру: Можно посмотреть, как оно в заголовочном файле объявлено. К примеру у меня в макоси оно вот так выглядит:
Код
$ grep new /usr/include/c++/4.0.0/new 
/** @file new
 *  The header @c new defines several functions to manage dynamic memory and
   *  @brief  Exception possibly thrown by @c new.
   *  errors from the throwing forms of @c new.  */
  /** If you write your own error handler to be called by @c new, it must
  typedef void (*new_handler)();
  new_handler set_new_handler(new_handler) throw();
 *  - normal single new and delete (no arguments, throw @c bad_alloc on error)
 *  - normal array new and delete (same)
 *  - @c nothrow single new and delete (take a @c nothrow argument, return
 *  - @c nothrow array new and delete (same)
 *  Placement new and delete signatures (take a memory address argument,
void* operator new(std::size_t) throw (std::bad_alloc);
void* operator new[](std::size_t) throw (std::bad_alloc);
void* operator new(std::size_t, const std::nothrow_t&) throw();
void* operator new[](std::size_t, const std::nothrow_t&) throw();
// Default placement versions of operator new.
inline void* operator new(std::size_t, void* __p) throw() { return __p; }
inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
04.03.2010, 16:31     Документация g++ #12
Делается всё просто. Вызывается new и просится очень много памяти. Проверяется, возвращается null или кидается exception
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.03.2010, 17:37     Документация g++ #13
Цитата Сообщение от Evg Посмотреть сообщение
Вызывается new и просится очень много памяти. Проверяется, возвращается null или кидается exception
так это и понятно. не понятно отношение cmd.exe к std::bad_alloc

Добавлено через 20 секунд
или наоборот)
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
04.03.2010, 17:48     Документация g++ #14
Вот реализация оператора new из gcc-4.2.1 (файл gcc-4.2.1/libstdc++-v3/libsupc++/new_op.cc)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
_GLIBCXX_WEAK_DEFINITION void *
operator new (std::size_t sz) throw (std::bad_alloc)
{
  void *p;
 
  /* malloc (0) is unpredictable; avoid it.  */
  if (sz == 0)
    sz = 1;
  p = (void *) malloc (sz);
  while (p == 0)
    {
      new_handler handler = __new_handler;
      if (! handler)
#ifdef __EXCEPTIONS
    throw bad_alloc();
#else
        std::abort();
#endif
      handler ();
      p = (void *) malloc (sz);
    }
 
  return p;
}
Добавлено через 2 минуты
Правда есть ещё какая-то "nothrow"-реализация (файл new_opnt.cc)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
_GLIBCXX_WEAK_DEFINITION void *
operator new (std::size_t sz, const std::nothrow_t&) throw()
{
  void *p;
 
  /* malloc (0) is unpredictable; avoid it.  */
  if (sz == 0)
    sz = 1;
  p = (void *) malloc (sz);
  while (p == 0)
    {
      new_handler handler = __new_handler;
      if (! handler)
    return 0;
      try
    {
      handler ();
    }
      catch (bad_alloc &)
    {
      return 0;
    }
 
      p = (void *) malloc (sz);
    }
 
  return p;
}
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.03.2010, 17:54     Документация g++ #15
Evg, так я про другое. какое отношение оператор new имеет к вендовскому интерпретатору команд(cmd.exe) ?
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
04.03.2010, 18:14     Документация g++ #16
Цитата Сообщение от niXman Посмотреть сообщение
Evg, так я про другое. какое отношение оператор new имеет к вендовскому интерпретатору команд(cmd.exe) ?
Не знаю. Я только отвечал автору на вопрос. Остальную переписку читать заломало

Добавлено через 2 минуты
Цитата Сообщение от niXman Посмотреть сообщение
так и есть.
за несоответствие стандарту, можно обвинять микрософтстудию и борланд. но не gcc.
С учётом того, что на протяжении всей версии gcc-3.*.* и gcc-4.*.* они постоянно привоядт поведение компилятора к стандарту, то твоё утверждение весьма спорно
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.03.2010, 19:20     Документация g++ #17
Цитата Сообщение от Evg Посмотреть сообщение
С учётом того, что на протяжении всей версии gcc-3.*.* и gcc-4.*.* они постоянно привоядт поведение компилятора к стандарту
к какому из стандартов?
начиная с версии 4.4.* началась реализация с++0х. примерно в одно и то же время, этим занялись все серьезные производители компиляторов.
к сожалению, времена 3.* застал чуть-чуть. так что тут хз.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
04.03.2010, 19:59     Документация g++ #18
4.4 - это совсем свежая версия. А так традиционно g++ очень фривольно общался со стандартами Си++ и разрешал очень много конструкций (видимо, из соображений "а почему бы и нет?"). И проблема из этого росла такая, что многое из софта, которое собиралось на gcc-2.95.3 (последний стабильный компилятор из 2-й серии) не собиралось на 3-их версиях, потому как в софте было много некорректных конструкций, которые 2-й gcc (т.е. g++) кушал, а 3-й уже запрещал. Такая же картина была и при переходе с 3-ей версии на 4-ю, но уже в меньшей степени. Какие-то конкретные примеры не могу дать, ибо по части Си++ у меня туго.

Нынешние версии поддерживают какие-то конструкции типа extern template, правда, скорее всего, это уже относится к расширениям gnu
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2010, 21:12     Документация g++
Еще ссылки по теме:

C++ Документация MSDN
C++ Последняя официальная документация по стандарту СРР
C++ Документация и примеры по файлу dsound.h

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.03.2010, 21:12     Документация g++ #19
Цитата Сообщение от Evg Посмотреть сообщение
extern template
это требование с++0х. не скажу что это необходимо, ибо это не так. но существенно(очень) ускоряет компиляцию исходников шаблонного кода, и объем сгенерированого объектника. всего лишь.

Добавлено через 3 минуты
если любопытно, вот что реализовано: http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
Yandex
Объявления
04.03.2010, 21:12     Документация g++
Ответ Создать тему
Опции темы

Текущее время: 23:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru