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 중국어 웹사이트의 기타 관련 기사를 참조하세요!