使用 C 在 VisualStudio 和 CodeBlocks 之间来回切换时出错

errors when switching back and forth between VisualStudio and CodeBlocks using C

我正在晚年(50 岁以上)学习编程。我正在使用 Visual Studio 2015 和 Code::Blocks ver 16.01.

我有一些问题。

首先,为什么 VS 和 CB 需要“调整”才能编译和 运行 下面包含的代码? M_PI 怎么了? (我以为是的一部分,但是显然VS不认识) 为什么我必须在 VS 而不是在 CB 中执行#define? 为什么 M_PI 不显示其定义的值?

旁注:我知道 scanff 已被弃用,但如果您必须走那条路,请放心。我们需要在 class.

中使用它

这是我对代码块的初步了解。 它编译和运行s。 这使用 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 错误清除,代码编译和 运行s 与代码块版本相同。 这使用 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;
    }

提前致谢!

出于某些未知原因,MSVS 在包含 math.h

之前需要 #define _USE_MATH_DEFINES