我正在学习晚年(50岁以上)的节目。我正在使用Visual Studio 2015和Code :: Blocks ver 16.01。
我有一些问题。
首先,为什么VS和CB需要'调整'才能使它们编译并运行下面的代码? 什么是M_PI? (我认为这是它的一部分,但显然VS不承认它) 为什么我必须在VS中执行#define而不是在CB中执行#define? 为什么M_PI不显示其定义的值?
附注:我知道scanff已被弃用,但如果你必须沿着这条路走下去,那就随意了。我们需要在课堂上使用它。
这是我最初进入代码块的过程。 它编译并运行。 这使用stdio.h和math.h
// >>>> CODEBLOCKS VERSION <<<<
#include <stdio.h>
#include <math.h>
// M_PI is 3.14159265358979323849
int main ( void )
{
double myNumber = 0.0;
printf("Enter a number.\n");
scanf("%lf", &myNumber);
printf("You entered: %lf.", myNumber);
printf("This is the value of pi: %.20lf.", M_PI);
return 0;
}
当我将其粘贴到Visual Studio并进行编译时,我收到错误。具体而言,'标识符'M_PI“未定义”。 如果我添加#define M_PI 3.14159265358979323849,错误就会消失,但我得到了 代码C4996 - 'scanf':此函数或变量可能不安全。请考虑使用scanf_s。要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS。详细信息请参见在线帮助。 如果我将scanf更改为scanf_s,则错误清除,代码编译并运行与codeblocks版本相同的错误。 这使用stdio.h和math.h以及
// >>>> VISUAL STUDIO VERSION <<<<
#include <stdio.h>
#include <math.h>
#define M_PI 3.14159265358979323849
int main(void)
{
double myNumber = 0.0;
printf("Enter a number.\n");
scanf_s("%lf", &myNumber);
printf("You entered: %lf.", myNumber);
printf("This is the value of pi: %.20lf.", M_PI);
return 0;
}
提前致谢!
答案 0 :(得分:0)
由于某些未知原因,MSVS在包含#define _USE_MATH_DEFINES
math.h