适用于一个编译器,但不适用于其他编译器

时间:2017-09-07 13:46:11

标签: c pc

我尝试使用C语言编写一个非常简单的程序。 我使用Visual Studio和CodeBlocks进行编译。

但是这段代码:

#include <stdio.h>
#include <stdlib.h>

int main() {
    float a;

    printf("Give a number: \n");
    scanf("%f", &a);
    float b = a * 2;
    printf("The result is: %f", b);

}

它使用CodeBlocks,但不能使用Visual Studio。 你能给我一个提示吗?

是的,我刚刚开始学习编码。

编辑:严重性代码描述项目文件行抑制状态 错误C4996&#39; scanf&#39;:此函数或变量可能不安全。请考虑使用scanf_s。要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS。详细信息请参见在线帮助。变量c:\ users \ PinkP \ documents \ visual studio 2015 \ projects \ variables \ variables.c 32

2 个答案:

答案 0 :(得分:1)

Visual Studio编译器认为

scanf("%f", &a);不安全,他们更喜欢安排弃用函数。 (虽然ISO没有这样的计划。)他们真的希望你使用scanf_s,因为这样不太可能弄乱你的记忆。

您可以按照编译器消息禁用此警告:即#define _CRT_SECURE_NO_WARNINGS

具有讽刺意味的是,编译器允许你的非标准main()函数没有抽搐!请考虑使用更便携的

int main()

自C99以来一直需要。

答案 1 :(得分:0)

Visual Studio 2015对于已弃用的功能比2010年更为严格。

正如Visual Studio 2010所做的那样,它不仅仅是建议你需要对scanf的使用做些什么,而是强迫你对它做点什么。

您需要切换到scanf_s或使用_CRT_SECURE_NO_WARNINGS。