使用C

时间:2016-10-05 23:14:57

标签: c visual-studio codeblocks

我正在学习晚年(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;
    }

提前致谢!

1 个答案:

答案 0 :(得分:0)

由于某些未知原因,MSVS在包含#define _USE_MATH_DEFINES

之前需要math.h