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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.96
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
#1

M_PI + cmath в Visual Studio - C++

06.05.2013, 15:02. Просмотров 3603. Ответов 6
Метки нет (Все метки)

Всем привет.
Почему в VS (проверено на 2010 и 2012) при использовании cmath нельзя достучаться до константы M_PI, а при использовании math.h - можно?
C++
1
2
3
4
5
6
7
8
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h> // находит M_PI
// #include <cmath> // не находит M_PI
int main()
{
   std::cout << M_PI << std::endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2013, 15:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос M_PI + cmath в Visual Studio (C++):

Имеются ли отличия в компиляторах у сред разработки Visual Studio 2006 и Visual Studio 2015 ? - C++
скажите а где найти среду 2006 года? или можно использовать 2015 год?

Visual Studio Team Foundation Serverl или Visual Studio Professional - C++
Visual Studio Team Foundation Server 2010 Кто пользовался Visual Studio Team Foundation Server 2010, и чем она отличаеться от Visual...

Какую среду программирования лучше выбрать для обучения языку C++ ? Visual Studio,Visual Basic или Visual C++? - C++
И напишите,чем рекомендуемая вами среда программирования лучше других? Насколько я понял из Википедии они все поддерживают язык...

Написать программу. Задания нужно выполнять на языке Visual C++ в среде Microsoft Visual Studio 2008 - C++
Можете написать программу? Задание по номером 3.24 (2 рисунок).

Перевод с RAD Studio в Visual studio - C++
Помогите пожалуйста, перевести код с одной среды разработки на другую, очень нужно. Вот код. #include &lt;vcl.h&gt; #pragma hdrstop ...

несовместимость visual c++ 6.0 и visual studio 2008 - C++
почему правильно гаписанная программа в visual c++ 6.0 не работает в visual studio 2008 , а именно #include &lt;iostream&gt; ...

6
Somebody
2789 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
06.05.2013, 15:33 #2
А если попробовать define до include iostream? Может быть, iostream подключает cmath до define...
1
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.05.2013, 15:36  [ТС] #3
Somebody, точняк. Вот ведь прикол. Понапихали хедеров одних в другие
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
08.05.2013, 23:47 #4
Цитата Сообщение от Tulosba Посмотреть сообщение
Понапихали хедеров одних в другие
В принципе все правильно. Зачастую хедеры друг друга цепляют. Это нормально.
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
08.05.2013, 23:56  [ТС] #5
Цитата Сообщение от go Посмотреть сообщение
В принципе все правильно. Зачастую хедеры друг друга цепляют. Это нормально.
Где-то недавно уже читал про это. Вроде как стандарт не регламентирует какие хедеры имеют право каких включать. Остается только догадываться какой производитель компилятора какую матрешку соберет.
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.05.2013, 18:57 #6
Цитата Сообщение от Tulosba Посмотреть сообщение
Остается только догадываться какой производитель компилятора какую матрешку соберет.
На самом деле об этом задумываться не приходится. Достаточно знать, в каком заголовочном файле реально объявлен используемый символ, и явно подключать этот файл, не уповая на то, что разработчики используемой реализации стандартной библиотеки уже подключили его куда-то ещё. Я стараюсь делать так всегда, поэтому у меня даже в небольших модулях зачастую 10-20 строк уходит под инклуды.
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
13.05.2013, 21:22  [ТС] #7
silent_1991, с одной стороны, не каждый проект будет портироваться на другие системы и даже собираться другим компилятором, и беспокоиться о неподключенных вручную хедерах, если все и так работает - это лишние телодвижения. С другой стороны, даже подключая все хедеры как надо, проблему, описанную в топике, не решить, если не указать нужные дефайны перед всеми хедерами. Ибо не ясно кто кого может включать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2013, 21:22
Привет! Вот еще темы с ответами:

несовместимость visual c++ 6.0 и visual studio 2008 - C++
почему правильно написанная программа в visual c++ 6.0 не работает в visual studio 2008 , а именно #include &lt;iostream&gt; using namespace...

ругается на M_PI - C++
Вот программка из видео-урока. Но у меня в Visual выдаёт ошибку: error C2065: 'M_PI' : undeclared identifier. Объясните, в чём туплю ...

Ругается на if (a>M_PI) - C++
#include &lt;math.h&gt; есть.

Работает в Borland Developer Studio 2006 но не работает в Visual Studio 2008, почему? - C++
Вводим строку и меняем в ней первый и последний символы. Всё хорошо в Borland Developer Studio, а Visual Studio 2008 пишет, что проэкт...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
13.05.2013, 21:22
Ответ Создать тему
Опции темы

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