2016-08-30 2 views
0

나는 약 access links에서 wikipedia하지만 액세스 링크가 무엇인지, 그리고 그들이 어떤 함수의 반송 주소와 다른지에 대한 명확한 그림을 얻을 수 없었다. 누군가가 액세스 링크가 무엇인지, 그리고 호출 스택에서 필요한 이유를 간단히 설명 할 수 있습니까?스택 프레임의 액세스 링크 란 무엇입니까?

+2

을 언급 한 바와 같이 표준 접근 링크가 없습니다. –

+0

Wikipedia에서는 중첩 된 서브 루틴이 있으면 액세스 링크가 있고 C는 중첩 된 서브 루틴을 지원하므로 C에서 액세스 링크가 있어야한다고 말합니다. – vikkyhacks

+1

그들은 C에서 지원되지 않습니다. 당신의 컴파일러는 그것들을 확장으로 가지고 있을지 모르지만, C가 아닌 C의 확장입니다. –

답변

3

Pascal 또는 Java의 패러다임을 실제로 만날 수 있습니다 (예 : C).

예를 들어, 자바, 당신은 선언 할 수 :

void func1() { 
    int outer = 2; 
    int func2() { 
     int inner = 3; 
     return inner+outer; 
    } 
    int result = func2(); 
} 

func1 실행의 끝에서, result 변수는 로컬로 정의 된 변수 outerinner의 합이다 (5)를 포함한다.

access link 정확히 '포인터'를 실제 외부 범위에 전달하여 내부 함수로 전달합니다.

gcc 컴파일러의 일부가 아닌 그 Nested Functions extension이있는 C 당신은 C를 사용하는 것처럼 n.m만큼

+0

위의 코드를 복사하여 C로 컴파일하고 올바른 출력을주었습니다. 왜 그렇습니까? C에서 지원되지 않는다고하셨습니까? – vikkyhacks

+0

어떤'C' 컴파일러를 사용합니까? – Serge

+0

나는 gcc를 사용했다. gcc -std = gnu99 -g -Wall -m32 filename.c' – vikkyhacks

관련 문제