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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
daemonik
3 / 3 / 0
Регистрация: 24.04.2010
Сообщений: 37
#1

Почему не доступно число M_E в visual studio 2012 - C++

12.12.2012, 15:18. Просмотров 1412. Ответов 13
Метки нет (Все метки)

Доброго времени суток! Я сегодня столкнулся с проблемой в новой студии. В консольном приложении пишется ошибка:
Error 1 error C2065: 'M_E' : undeclared identifier
,
хотя эти 2 строчки
C++
1
2
#define _USE_MATH_DEFINES
#include <cmath>
у меня вставлены. В 2005 студии компилируется, в 2012 - нет. Что это может быть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 15:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему не доступно число M_E в visual studio 2012 (C++):

Переход на Visual Studio 2012 - C++
Вот обучался по книге Р.Лафоре ООП. Вчера решил сменить компилятор, перешел с Visual Studio 6.0 на Visual Studio Ultimate 2012 Кто...

Visual Studio 2012 на x64 - C++
В общем, решил брать ноут и вот думаю, пойдет ли VS 2012 на архитектуре х64, и будут ли с ней проблемы? (качать буду с {ссылка удалена} ...

Долгая компиляция MS Visual Studio 2012 - C++
Долго компилирует проект даже простой. Может быть дело в таком железе: Intel Celeron Dual-Core E5500 ОЗУ 4 гигабайта

Где взять visual studio 2012? - C++
Хотела спросить может быть у вас есть сылка для скачиванья visual studio 20012 полная версия?

Настройка SDL в Visual Studio 2012 - C++
Здравствуйте. Настраиваю SDL по данному видео: https://www.youtube.com/watch?v=mdQHYxe6zJo Подключил папки bin и include, скопировал файл...

Visual Studio 2012 Ultimate Русская - C++
Дайте ссылку на Visual Studio 2012 Ultimate Русская Версия :wall: :wall: :wall:

13
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2012, 15:34 #2
daemonik, пустой проект создать. Или добавить в stdafx.h этот макрос. Или в параметрах проекта.

Добавлено через 41 секунду
Ну это я описал как быть.
Причина такого поведения я думаю понятно.

Добавлено через 1 минуту
Ну вообще это не стандарт языка (например, его нет в С99) это расширение. Так что это не безопасно, лично я юзаю boost.
1
daemonik
3 / 3 / 0
Регистрация: 24.04.2010
Сообщений: 37
12.12.2012, 15:36  [ТС] #3
Цитата Сообщение от go Посмотреть сообщение
Причина такого поведения я думаю понятно.
Не совсем.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2012, 15:39 #4
daemonik, макрос
C++
1
#define _USE_MATH_DEFINES
Должен идти перед включением
C++
1
#include <cmath>
daemonik, а что не помогло?
0
daemonik
3 / 3 / 0
Регистрация: 24.04.2010
Сообщений: 37
12.12.2012, 15:40  [ТС] #5
Цитата Сообщение от go Посмотреть сообщение
daemonik, макрос
C++
1
#define _USE_MATH_DEFINES
Должен идти перед включением
C++
1
#include <cmath>
daemonik, а что не помогло?
Всё так и писал.
Нет, помогло, просто мне не совсем понятно, почему в 2005 всё работает, а в 2012 ругается.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2012, 15:42 #6
daemonik, я особо не пользовался 5-ой студией, так что сложно сказать как там работают предкомпилируемые заголовки.
0
Croessmah
Эксперт CЭксперт С++
13415 / 7567 / 855
Регистрация: 27.09.2012
Сообщений: 18,629
Записей в блоге: 3
Завершенные тесты: 1
12.12.2012, 18:43 #7
Заменить
C++
1
<cmath>
на
C++
1
<math.h>
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2012, 18:45 #8
Croessmah, ну-ну. Зачем Вам Си-шный хедер. Одним словом фиговый вариант. ТС, не делай так.
0
Croessmah
Эксперт CЭксперт С++
13415 / 7567 / 855
Регистрация: 27.09.2012
Сообщений: 18,629
Записей в блоге: 3
Завершенные тесты: 1
12.12.2012, 18:58 #9
Цитата Сообщение от go Посмотреть сообщение
Croessmah, ну-ну. Зачем Вам Си-шный хедер. Одним словом фиговый вариант. ТС, не делай так.
Ну я сугубо про данный случай. А вообще, как мне кажется, ТС просто подключает впереди другие заголовки, да ведь?

Добавлено через 1 минуту
Для примера, в iostream включается math.h, поэтому, так работать не будет:
C++
1
2
3
#include <iostream>
#define _USE_MATH_DEFINES
#include <cmath>
а так будет:
C++
1
2
3
#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
Добавлено через 1 минуту
go, в cmath все равно включается math.h
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2012, 19:05 #10
Цитата Сообщение от Croessmah Посмотреть сообщение
А вообще, как мне кажется, ТС просто подключает впереди другие заголовки, да ведь?
Все возможно. Может и из-за stdfax.h (там тоже возможно включение, я склоняюсь к этому варианту). Я не видел проекта ТСа, поэтому мы этого скорее всего не узнаем.

Добавлено через 2 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
go, в cmath все равно включается math.h
Ну нет же http://liveworkspace.org/code/bruS5$5
Изменив на cmath, тогда скомпилится.
0
Croessmah
Эксперт CЭксперт С++
13415 / 7567 / 855
Регистрация: 27.09.2012
Сообщений: 18,629
Записей в блоге: 3
Завершенные тесты: 1
12.12.2012, 19:09 #11
Цитата Сообщение от go Посмотреть сообщение
Может и из-за stdfax.h (там тоже возможно включение, я склоняюсь к этому варианту).
В 12 студии он выглядит так(всё лишнее поубирал):
stdafx.h
C++
1
2
3
4
5
6
#pragma once
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
targetver.h
C++
1
2
#pragma once
#include <SDKDDKVer.h>
Добавлено через 3 минуты
Цитата Сообщение от go Посмотреть сообщение
Ну нет же http://liveworkspace.org/code/bruS5$5
Изменив на cmath, тогда скомпилится.
А в Вашем примере, уберите std, ибо в math.h нет пространства имен.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
12.12.2012, 19:14 #12
Croessmah, Про перегрузку функций, специфичную для плюсов тоже забывать не стоит.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2012, 19:15 #13
Цитата Сообщение от Croessmah Посмотреть сообщение
Там функции доступны как в пространстве std, так и в глобальном.
Студия далека от стандарт
У меня не скомпилилась в 10-ой студии(а она еще актуальна), да и если вы создадите пустой проект, то не скомпилится.
0
Croessmah
Эксперт CЭксперт С++
13415 / 7567 / 855
Регистрация: 27.09.2012
Сообщений: 18,629
Записей в блоге: 3
Завершенные тесты: 1
12.12.2012, 19:19 #14
Цитата Сообщение от go Посмотреть сообщение
Студия далека от стандарт
Ну мелкософт считает, что стандарт далек от студии

Цитата Сообщение от go Посмотреть сообщение
У меня не скомпилилась в 10-ой студии(а она еще актуальна), да и если вы создадите пустой проект, то не скомпилится.
Ну так заголовок то сишный, а Вы ему пространство имен скормить пытались, поэтому и не скомпилировалось. Лично я ненавижу юзать математические функции через ::
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2012, 19:19
Привет! Вот еще темы с ответами:

Menustrip.C++ Microsoft Visual Studio 2012 - C++
Здравствуйте! Пытаюсь работать в windows forms. Cуть программы такова : пользователь открывает (используя стандартное меню объекта...

Открытие процессов visual studio 2012 - C++
В общем, есть такой вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;Windows.h&gt; #include &lt;cmath&gt; #include &lt;winbase.h&gt; ...

Не корректная работа visual studio 2012 Express - C++
Приветствую. Вот такой код: #include &lt;iostream&gt; #include &lt;clocale&gt; using namespace std; int main() { setlocale(0,&quot;&quot;); int...

Не удаётся запустить Visual Studio 2012 Express - C++
Я устанавливаю, но не ярлыка не файла drven.exe нету, и в пуске я тоже искал.Скачивал с разных сайтов ни как не могу решить проблему


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

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

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