옛날 옛적에 학교의 선생님은 "출력은 어떻게 될 것입니까?"라는 질문을 가진 코드 예제를 보여주었습니다.주문 관련 문제를 외부 변수와 연결하는 이유는 무엇입니까?
file1.c에서 (한 라인) :
이int a = 8;
와 file2.c :
다음#include <stdio.h>
int main(void) {
int b = 20;
extern int a;
printf("%d", a + b);
}
, 그는이 두 번 컴파일 : 같은 첫 번째는 무언가 그것은이 같은했다 이 :
gcc file1.c file2.c -o prog_name
출력은 28
입니다. 하지만, 그는이 방법으로 컴파일 (또는 이와 유사한) :
gcc file2.c file1.c -o prog_name
그 결과 단지 달랐다, 나는 그것이 20
생각.
자,이 "까다로운 질문"을 재현하려면이 두 가지 다른 (?) 메서드를 사용하여 컴파일 할 때 결과로 28
만 얻었습니다. 문제를 컴파일 할 때 소스 파일의 순서인지 여부와 내가 기억 하듯이이 예제를 작업에 재현하는 방법에 대해 간단하게 묻고 싶습니다. 이것은 가능한가?
대신 선생님에게 물어보십시오.이 사실에 대한 기억은 너무 흐릿합니다. –
올바른 동작이 예상됩니다. 링크 순서는 프로그램의 출력에 영향을주지 않아야합니다. (한 쌍의 라이브러리가 다른 방식으로 공통 기능을 구현하는 경우 두 라이브러리의 링크 순서가 중요하지만 그 방법은 다루는 것보다 훨씬 복잡합니다.) –
@HansPassant 그는 죽었습니다. – python