Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/27: Рейтинг темы: голосов - 27, средняя оценка - 4.56
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
1

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

03.03.2010, 12:49. Показов 4853. Ответов 18
Метки нет (Все метки)

Недавно начал изучать С++, и хочу научиться искать необходимую документацию, опыта в поиске доки не имел, и хочу попросить совет как мне найти доку например для new(компилятор g++) - собственно нужно узнать он генерирует исключительную ситуацию или возвращает нулевой указатель. Искал тут - http://gcc.gnu.org/onlinedocs/gcc-4.4.3/cpp.pdf но ничего не нашел

Прошу не винить за глупый вопрос, просто хочу научиться читать доку. Спасибо
2

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2010, 12:49
Ответы с готовыми решениями:

Документация MSDN
В библиотеках Windows'a нашел интересные статьи по поводу консоли. Есть ли перевод этой...

Документация по SDL
Люди , кто знает пожалуйста киньте ссылки на документацию по SDL =) Заранее спс!

Актуальная документация
Добрый день, уважаемые форумчане. Я новичок в С++ и недавно я услышал, что для поднятия уровня...

документация по для пользователя
Ничерта не понимаю в этом. Дали задание в универе, хоть кровь из носа надо сдать, хелп, плиз ...

18
Псевдо программист
192 / 113 / 37
Регистрация: 19.09.2009
Сообщений: 303
03.03.2010, 12:53 2
заходите в любой поисковик. я рекомендую google.com
пишите ключевые слова. для данного случая - "c++ new" без кавычек.
смотрите результаты поиска и наслаждаетесь.
0
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
03.03.2010, 13:06  [ТС] 3
Цитата Сообщение от R0mm Посмотреть сообщение
заходите в любой поисковик. я рекомендую google.com
пишите ключевые слова. для данного случая - "c++ new" без кавычек.
смотрите результаты поиска и наслаждаетесь.
это понятно, но я ищу именно для g++, читаю сейчас книгу Шилдта, там сказано что в случае неудачи по стандарту new должен возвращать bad_alloc, как тут - http://www.cplusplus.com/refer... bad_alloc/ , "но не все компиляторы соответствуют стандарту и некоторые возвращают нулевой указатель, что тоже не запрещается", так мне нужно узнать конкретно что возвращает new в g++ и где это искать?
1
быдлокодер
1721 / 908 / 106
Регистрация: 04.06.2008
Сообщений: 5,635
03.03.2010, 16:29 4
На счёт документации не знаю. Но, я пожалуй, смогу тебе помочь, еесли ты захочешь узнаТь, что именно возвратил очередной вызов gcc
Речь идёт не о чтении документации, а о нескольких лёгких пассах руками. Если заинтересовался- напиши.
0
Эксперт С++
3210 / 1458 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
03.03.2010, 17:40 5
Цитата Сообщение от norge_goth Посмотреть сообщение
в случае неудачи по стандарту new должен возвращать bad_alloc
так и есть.
за несоответствие стандарту, можно обвинять микрософтстудию и борланд. но не gcc.
0
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
03.03.2010, 23:35  [ТС] 6
Цитата Сообщение от kravam Посмотреть сообщение
На счёт документации не знаю. Но, я пожалуй, смогу тебе помочь, еесли ты захочешь узнаТь, что именно возвратил очередной вызов gcc
Речь идёт не о чтении документации, а о нескольких лёгких пассах руками. Если заинтересовался- напиши.
Да конечно, очень хочу для моего развития будет оч полезно внимательно слушаю
0
быдлокодер
1721 / 908 / 106
Регистрация: 04.06.2008
Сообщений: 5,635
03.03.2010, 23:44 7
Ну дело собсно в том, что, как заявляют создатели cmd.exe, узнать, что возвращает та или иная команда. довольно легко. Почитать здесь.
ссылки на другие форумы запрещены

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

Более подробно щас писать некогда, футбол выбил из колеи.
0
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
03.03.2010, 23:47  [ТС] 8
Цитата Сообщение от kravam Посмотреть сообщение
Более подробно щас писать некогда, футбол выбил из колеи.
а ну эт дело нужное ща буду разбираться
0
Эксперт С++
3210 / 1458 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
03.03.2010, 23:51 9
Цитата Сообщение от kravam Посмотреть сообщение
Ну дело собсно в том, что, как заявляют создатели cmd.exe, узнать, что возвращает та или иная команда. довольно легко. Почитать здесь.
ссылки на другие форумы запрещены

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

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

Добавлено через 32 секунды
я просто в ступоре
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11032 / 6984 / 1651
Регистрация: 25.07.2009
Сообщений: 12,738
04.03.2010, 09:34 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?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11032 / 6984 / 1651
Регистрация: 25.07.2009
Сообщений: 12,738
04.03.2010, 14:36 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; }
2
Evg
Эксперт CАвтор FAQ
21204 / 8220 / 633
Регистрация: 30.03.2009
Сообщений: 22,538
Записей в блоге: 30
04.03.2010, 16:31 12
Делается всё просто. Вызывается new и просится очень много памяти. Проверяется, возвращается null или кидается exception
1
Эксперт С++
3210 / 1458 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.03.2010, 17:37 13
Цитата Сообщение от Evg Посмотреть сообщение
Вызывается new и просится очень много памяти. Проверяется, возвращается null или кидается exception
так это и понятно. не понятно отношение cmd.exe к std::bad_alloc

Добавлено через 20 секунд
или наоборот)
0
Evg
Эксперт CАвтор FAQ
21204 / 8220 / 633
Регистрация: 30.03.2009
Сообщений: 22,538
Записей в блоге: 30
04.03.2010, 17:48 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;
}
1
Эксперт С++
3210 / 1458 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.03.2010, 17:54 15
Evg, так я про другое. какое отношение оператор new имеет к вендовскому интерпретатору команд(cmd.exe) ?
0
Evg
Эксперт CАвтор FAQ
21204 / 8220 / 633
Регистрация: 30.03.2009
Сообщений: 22,538
Записей в блоге: 30
04.03.2010, 18:14 16
Цитата Сообщение от niXman Посмотреть сообщение
Evg, так я про другое. какое отношение оператор new имеет к вендовскому интерпретатору команд(cmd.exe) ?
Не знаю. Я только отвечал автору на вопрос. Остальную переписку читать заломало

Добавлено через 2 минуты
Цитата Сообщение от niXman Посмотреть сообщение
так и есть.
за несоответствие стандарту, можно обвинять микрософтстудию и борланд. но не gcc.
С учётом того, что на протяжении всей версии gcc-3.*.* и gcc-4.*.* они постоянно привоядт поведение компилятора к стандарту, то твоё утверждение весьма спорно
0
Эксперт С++
3210 / 1458 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.03.2010, 19:20 17
Цитата Сообщение от Evg Посмотреть сообщение
С учётом того, что на протяжении всей версии gcc-3.*.* и gcc-4.*.* они постоянно привоядт поведение компилятора к стандарту
к какому из стандартов?
начиная с версии 4.4.* началась реализация с++0х. примерно в одно и то же время, этим занялись все серьезные производители компиляторов.
к сожалению, времена 3.* застал чуть-чуть. так что тут хз.
0
Evg
Эксперт CАвтор FAQ
21204 / 8220 / 633
Регистрация: 30.03.2009
Сообщений: 22,538
Записей в блоге: 30
04.03.2010, 19:59 18
4.4 - это совсем свежая версия. А так традиционно g++ очень фривольно общался со стандартами Си++ и разрешал очень много конструкций (видимо, из соображений "а почему бы и нет?"). И проблема из этого росла такая, что многое из софта, которое собиралось на gcc-2.95.3 (последний стабильный компилятор из 2-й серии) не собиралось на 3-их версиях, потому как в софте было много некорректных конструкций, которые 2-й gcc (т.е. g++) кушал, а 3-й уже запрещал. Такая же картина была и при переходе с 3-ей версии на 4-ю, но уже в меньшей степени. Какие-то конкретные примеры не могу дать, ибо по части Си++ у меня туго.

Нынешние версии поддерживают какие-то конструкции типа extern template, правда, скорее всего, это уже относится к расширениям gnu
1
Эксперт С++
3210 / 1458 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.03.2010, 21:12 19
Цитата Сообщение от Evg Посмотреть сообщение
extern template
это требование с++0х. не скажу что это необходимо, ибо это не так. но существенно(очень) ускоряет компиляцию исходников шаблонного кода, и объем сгенерированого объектника. всего лишь.

Добавлено через 3 минуты
если любопытно, вот что реализовано: http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2010, 21:12

Документация по флагам оптимизации
Подскажите мануал, документацию, гайд по флагам оптимизации. Желательно на русском. А то у меня...

Иерархия классов документация.
Здрастввйте алл. Пришлось заняться С++ Буилдером. Столкнулся с проблемой.. что все, что в...

Документация и примеры по файлу dsound.h
Добрый день, у меня MVS 2010 Express, подключил dsound.h, но не могу найти по нему документацию, на...

Последняя официальная документация по стандарту СРР
Кто знает, где обитает последняя официальная документация по стандарту СРР ?


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.