我正在晚年(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/