Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
3 / 3 / 0
Регистрация: 24.04.2010
Сообщений: 37
1

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

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


Доброго времени суток! Я сегодня столкнулся с проблемой в новой студии. В консольном приложении пишется ошибка:
Error 1 error C2065: 'M_E' : undeclared identifier
,
хотя эти 2 строчки
C++
1
2
#define _USE_MATH_DEFINES
#include <cmath>
у меня вставлены. В 2005 студии компилируется, в 2012 - нет. Что это может быть?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2012, 15:18
Ответы с готовыми решениями:

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

Visual Studio 2012 на x64
В общем, решил брать ноут и вот думаю, пойдет ли VS 2012 на архитектуре х64, и будут ли с ней...

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

Настройка SDL в Visual Studio 2012
Здравствуйте. Настраиваю SDL по данному видео: https://www.youtube.com/watch?v=mdQHYxe6zJo...

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

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

Добавлено через 1 минуту
Ну вообще это не стандарт языка (например, его нет в С99) это расширение. Так что это не безопасно, лично я юзаю boost.
1
3 / 3 / 0
Регистрация: 24.04.2010
Сообщений: 37
12.12.2012, 15:36  [ТС] 3
Цитата Сообщение от go Посмотреть сообщение
Причина такого поведения я думаю понятно.
Не совсем.
0
go
Эксперт С++
3643 / 1375 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
12.12.2012, 15:39 4
daemonik, макрос
C++
1
#define _USE_MATH_DEFINES
Должен идти перед включением
C++
1
#include <cmath>
daemonik, а что не помогло?
0
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
Эксперт С++
3643 / 1375 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
12.12.2012, 15:42 6
daemonik, я особо не пользовался 5-ой студией, так что сложно сказать как там работают предкомпилируемые заголовки.
0
Don't worry, be happy
16971 / 9852 / 1897
Регистрация: 27.09.2012
Сообщений: 24,429
Записей в блоге: 1
12.12.2012, 18:43 7
Заменить
C++
1
<cmath>
на
C++
1
<math.h>
0
go
Эксперт С++
3643 / 1375 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
12.12.2012, 18:45 8
Croessmah, ну-ну. Зачем Вам Си-шный хедер. Одним словом фиговый вариант. ТС, не делай так.
0
Don't worry, be happy
16971 / 9852 / 1897
Регистрация: 27.09.2012
Сообщений: 24,429
Записей в блоге: 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
Эксперт С++
3643 / 1375 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
12.12.2012, 19:05 10
Цитата Сообщение от Croessmah Посмотреть сообщение
А вообще, как мне кажется, ТС просто подключает впереди другие заголовки, да ведь?
Все возможно. Может и из-за stdfax.h (там тоже возможно включение, я склоняюсь к этому варианту). Я не видел проекта ТСа, поэтому мы этого скорее всего не узнаем.

Добавлено через 2 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
go, в cmath все равно включается math.h
Ну нет же http://liveworkspace.org/code/bruS5$5
Изменив на cmath, тогда скомпилится.
0
Don't worry, be happy
16971 / 9852 / 1897
Регистрация: 27.09.2012
Сообщений: 24,429
Записей в блоге: 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
В астрале
Эксперт С++
8030 / 4787 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
12.12.2012, 19:14 12
Croessmah, Про перегрузку функций, специфичную для плюсов тоже забывать не стоит.
0
go
Эксперт С++
3643 / 1375 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
12.12.2012, 19:15 13
Цитата Сообщение от Croessmah Посмотреть сообщение
Там функции доступны как в пространстве std, так и в глобальном.
Студия далека от стандарт
У меня не скомпилилась в 10-ой студии(а она еще актуальна), да и если вы создадите пустой проект, то не скомпилится.
0
Don't worry, be happy
16971 / 9852 / 1897
Регистрация: 27.09.2012
Сообщений: 24,429
Записей в блоге: 1
12.12.2012, 19:19 14
Цитата Сообщение от go Посмотреть сообщение
Студия далека от стандарт
Ну мелкософт считает, что стандарт далек от студии

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

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

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

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

Генерация исключений visual studio 2012
Здравствуйте, уважаемые форумчане. Решил с Питона перейти на C++ . Сейчас занимаюсь переносом...

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


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

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

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