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

标签 c visual-studio codeblocks

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

我有一些问题。

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

旁注:我知道 scanff 已被弃用,但如果您必须走那条路,请放心。我们必须在类里面使用它。

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

关于c - 使用 C 在 VisualStudio 和 CodeBlocks 之间来回切换时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39885105/

相关文章:

c# - 分开持有项目部分是一种好方式吗

c++ - 如何让 Code::Blocks 在同一目录中显示 .h 和 .cpp 文件?

c++ -/** 在 C++ 中是什么意思

c - 为什么在这个例子中 (int) 周围有括号?

c - C 中链表的问题

.net - TeamCity 不会复制所有引用的库

c++ - 如何从 SuperBible 获取 GLTools 库以在 Ubuntu 中工作?还是另一种选择?

c - 过于频繁地调用 Shell_NotifyIcon 后托盘图标停止出现

c++ - 自由类型错误 : FT_Load_Char returns 36

visual-studio - 是否有如下图所示移动光标的快捷方式?