> 백엔드 개발 > C++ > 동일한 코드가 C에서는 'hello'를 인쇄하고 C에서는 아무것도 인쇄하지 않는 이유는 무엇입니까?

동일한 코드가 C에서는 'hello'를 인쇄하고 C에서는 아무것도 인쇄하지 않는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-09 16:25:03
원래의
770명이 탐색했습니다.

Why Does the Same Code Print

C와 C의 유효한 코드 동작 차이

C와 C는 많은 유사점을 공유하지만 둘 다 유효한 코드가 있는 경우도 있습니다. 언어는 각 언어로 컴파일할 때 서로 다른 결과를 생성할 수 있습니다.

함수 호출 및 객체 선언

이러한 시나리오 중 하나는 함수 호출과 개체 선언의 차이와 관련이 있습니다. C90에서는 미리 선언하지 않고도 함수를 호출할 수 있습니다. 그러나 C에서는 선언되지 않은 함수가 허용되지 않습니다. 이러한 구별로 인해 다음 코드를 컴파일할 때 동작이 달라질 수 있습니다.

#include <stdio.h>

struct f { int x; };

int main() {
    f();
}

int f() {
    return printf("hello");
}
로그인 후 복사

C에서 이 코드는 f 유형의 임시 개체가 생성 및 삭제되어 x 멤버가 손실되므로 아무것도 인쇄하지 않습니다. . 그러나 C90에서는 함수를 선언하지 않고도 호출할 수 있으므로 "hello"를 인쇄합니다.

이름의 명확성

또 다른 주목해야 할 점은 예제 코드의 이름은 f입니다. C와 C 모두 함수와 구조에 동일한 이름을 사용할 수 있습니다. C에서 객체를 생성하려면 구조체 f를 명시적으로 지정해야 합니다. struct 키워드가 생략되면 코드는 함수 호출로 해석됩니다. 호출 규칙의 차이와 결합된 이러한 구별은 C와 C에서 코드를 컴파일할 때 관찰되는 다른 동작에 영향을 줍니다.

위 내용은 동일한 코드가 C에서는 'hello'를 인쇄하고 C에서는 아무것도 인쇄하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿