2017-09-07 1 views
0

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를 사용하여 작동합니다,하지만 비주얼 스튜디오와. 힌트를주세요.

, BTW 난 그냥 코딩을 배우기 시작했다.

EDIT : 심각도 코드 설명 프로젝트 파일 줄 억제 상태 오류 C4996 'scanf':이 함수 또는 변수가 안전하지 않을 수 있습니다. 대신에 scanf_s를 사용해보십시오. 지원 중단을 사용하지 않으려면 _CRT_SECURE_NO_WARNINGS를 사용하십시오. 자세한 내용은 온라인 도움말을 참조하십시오. 변수 c : \ users \ PinkP \ documents \ visual studio 2015 \ projects \ variables \ variables.c 32

+4

VS는 경고가 아니라 오류를 제공합니다. 코드는 여전히 작동해야합니다. – dasblinkenlight

+0

실행되지 않고 임의 번호 만 제공합니다. – PinkP

+0

당신이 사용하는 것이 추천된다 ['scanf_s'은] (https://msdn.microsoft.com/en-us/library/w40768et.aspx) 대신은'scanf' –

답변

1

scanf("%f", &a);은 비주얼 스튜디오 컴파일러에 의해 안전하지 않은 것으로 간주되며 비하하기 위해 기능을 과장되게 계획합니다. (비록 ISO에는 그러한 계획이 없다.) 실제로 그들은 당신이 대신 scanf_s을 사용하기를 원한다. 그것은 당신의 기억을 망칠 가능성이 적기 때문이다.

당신은 컴파일러 메시지에 따라이 경고를 해제 할 수 있습니다 : 즉 #define_CRT_SECURE_NO_WARNINGS.

여기에 아이러니는 컴파일러가 트 않고 표준이 아닌 main() 기능을 허용입니다! 이후 요구되고있다 더 많은 휴대용

int main()

를 사용하여 C99 등을 고려 마십시오.

+0

main()과 int main()을 사용하는 컴파일러의 차이점은 무엇입니까? – PinkP

+2

@pinkP 거의 확실한 차이점이없는 컴파일러에서. 그러나 C 표준은'main()'을 허용하지 않으므로 비표준 C를 매우 불필요하게 작성합니다. C와 함께 할 때 가능한 한 표준을 따르는 것이 더 쉬울 것이라는 것을 알게 될 것입니다. 적어도 당신은 deviancy를 위해 Stack Overflow에서 영원히 훈계를받지 않을 것입니다. – Persixty

+0

@PinkP : C99 표준 이전에는 함수 정의에 암시적인 'int'타이핑을 허용하는 데는 C가 사용되지 않았습니다. 이것은 C99 표준에서 바뀌었고 이제는 모든 함수가 명시 적으로 형식화되어야합니다. –

0

비주얼 스튜디오 2015했다 2010 이상 사용되지 않는 기능에 대한 엄격한입니다.

scanf을 사용하는 것과 관련하여 Visual Studio 2010에서했던 것처럼 뭔가를해야한다고 조언하는 대신, 이제는 사용자가 무언가를해야한다고 강요합니다.

당신은 _CRT_SECURE_NO_WARNINGS을 scanf_s 전환하거나 사용해야합니다.

관련 문제