Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Siarhey
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 19
1

Порядок препроцессоров

12.09.2016, 00:04. Просмотров 861. Ответов 3
Метки нет (Все метки)

Возникла проблема с очерёдностью препроцессоров, где в 1ом случае компилятор не "видит" #define _USE_MATH_DEFINES, который определён ниже #include <iostream>, а во втором уже видит, где #include <iostream> определён ниже #define _USE_MATH_DEFINES

----------------------------
1-ый случай(не рабочий):

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "stdafx.h"
 
#include <cmath>
#include <iostream>
#define _USE_MATH_DEFINES
using namespace std;
 
int main()
{
    double z = cos(M_PI);
    return 0;
}
-----------------------------
2-ой случай:

C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#define _USE_MATH_DEFINES
#include <cmath>
#include <iostream>
using namespace std;
 
int main()
{
    double z = cos(M_PI);
    return 0;
}
----------------------------
З.Ы всех с днём программиста
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2016, 00:04
Ответы с готовыми решениями:

Порядок отрицательных членов изменить на обратный, порядок неотрицательных сохранить
Задача (нужно все 3 пункта в 1 программе сделать) Прошу Помочь В условиях задания 3 а) порядок...

Компиляция препроцессоров на лету
Можно ли less либо saas компилировать на лету? Если подключить пустой файл css к странице, а код...

Ссылки с использованием препроцессоров less(css) и slim(html)
Задача состоит в следующем: Создать три html документа, связанных между собой. Ссылки должны...

порядок группы равен 4 и в ней только 1 элемент имеет порядок 4. какой порядок имеют остальные элементы? сколько в ней подгрупп?
Совсем не чего не понятно

Порядок отрицательных членов изменить на обратный, порядок неотрицательных сохранить
Задача по делфи(нужно все 3 пункта в 1 программе сделать) Прошу Помочь В условиях задания 3 а)...

3
ValeryS
Модератор
7911 / 5887 / 774
Регистрация: 14.02.2011
Сообщений: 20,249
Завершенные тесты: 1
12.09.2016, 20:49 2
Цитата Сообщение от Siarhey Посмотреть сообщение
который определён ниже #include <iostream>
я думаю дело не в iostream а в cmath
вот что говорит по этому поводу Майкрософт
Математические константы не определены в стандарте C/C++.Чтобы использовать их, необходимо сначала определить _USE_MATH_DEFINES, а затем включить cmath или math.h.
https://msdn.microsoft.com/ru-ru/library/4hwaceh6.aspx
1
Evg
Эксперт CАвтор FAQ
20643 / 8018 / 620
Регистрация: 30.03.2009
Сообщений: 22,305
Записей в блоге: 30
12.09.2016, 22:22 3
Лучший ответ Сообщение было отмечено Siarhey как решение

Решение

Включать макрос нужно не просто так, а именно перед директивой #include. Внутри #include'а cmath (и всех вложенных в него include'ов) есть какие-то тексты, которые накрыты макросом _USE_MATH_DEFINES. Если ты включишь макрос после того, как препроцессор прошёлся по этим текстам, то толку от этого не будет

Короткий пример:

C
/* Файл t.c */
#include "t.h"
 
int main (void)
{
  return MY_ZERO;
}
C
/* Файл t.h */
#ifdef MY_MACRO
#define MY_ZERO 0
#endif
Если в файл t.c перед #include'ом воткнуть "#define MY_MACRO", то пример скомпилится (т.к. макрос MY_ZERO будет определён). А если воткнуть после #include'а (или не втыкать), то сломается на компиляции (т.к. MY_ZERO не будет определён)

Добавлено через 1 минуту
Для самообразования:
Для чего нужен define?
Для чего нужен define?
1
hoggy
Эксперт С++
7402 / 3329 / 688
Регистрация: 15.11.2014
Сообщений: 7,615
Завершенные тесты: 1
13.09.2016, 00:00 4
Цитата Сообщение от Siarhey Посмотреть сообщение
#define _USE_MATH_DEFINES
перенесите вовнуть:
Цитата Сообщение от Siarhey Посмотреть сообщение
#include "stdafx.h"
1
13.09.2016, 00:00
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2016, 00:00

Написать функцию reverser, которая меняет порядок букв в каждом слове заданного предложения на противоположный, порядок
Написать функцию reverser, которая меняет порядок букв в каждом слове заданного предложения на...

Почему порядок любого элемента группы делит порядок группы
Здравствуйте. Почему порядок любого элемента группы делит порядок группы?

Порядок
Код:$info = ; list($a, $a, $a) = $info; var_dump($a); echo &quot;&lt;br /&gt;&quot;; list($b, $c, $d) = $info;...


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

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

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