Консультация № 187928
23.10.2014, 16:56
92.47 руб.
0 0 0
Здравствуйте, уважаемые эксперты!

Не могу понять поведение компилятора.

Используется MSVC2005
Проект типа "Win32 Console application"
(Проверено также на MSVC2010)

Файл other.cpp:
Код:

#include <math.h>

int myfun()
{
double a;
a=sqrt(M_PI);
return 0;
}


Ответ компилятора:
Код:

1>d:\myprog\myproj\myproj\other.cpp(6) : error C2065: 'M_PI' : undeclared identifier
1>Build log was saved at "file://d:\MyProg\MyProj\MyProj\Debug\BuildLog.htm"
1>MyProj - 1 error(s), 0 warning(s)


На всякий случай проверяю:
Код:

#include <math.h>

int myfun()
{
double a;
a=sqrt(3.14);
return 0;
}

Ответ:
Код:

1>MyProj - 0 error(s), 0 warning(s)


Смотрю файл "C:\Program Files\Microsoft Visual Studio 8\VC\include\MATH.H":
Код:

#define M_PI 3.14159265358979323846


Что я не понимаю?
Иными словами:
1) (в частности) Почему невидна M_PI?
2) (в общем) Почему игнорируется макро явно прописанное в поключенном h-файле?

Обсуждение

Форма ответа