2016-08-30 5 views
0

私はwikipediaの約access linksを持っていましたが、どのようなアクセスリンクがどのようなものであるか、どのような機能の戻りアドレスとはどのように異なっているかを明確に把握できませんでした。誰かが簡単にアクセスリンクが何であるか、なぜコールスタックに必要なのかを説明できますか?スタックフレーム上のアクセスリンクとは何ですか?

+2

を述べたように、標準Cの一部ではないNested Functions extensionを持っています。 –

+0

Wikipediaでは、ネストされたサブルーチンがあればアクセスリンクがあり、Cはネストされたサブルーチンをサポートしているので、Cでアクセスリンクを持つべきであると言います。 – vikkyhacks

+1

これらはC言語ではサポートされていませんが、あなたのコンパイラには拡張子が付いているかもしれませんが、C言語ではなくC言語の拡張機能です。 –

答えて

3

PascalまたはJavaのような実際のパラダイムは、たとえばCではありません。

たとえば、Javaでは、あなたが宣言することができます:

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

func1実行の終了時に、result変数は、ローカルに定義された変数outerinnerの和である5を含んでいるでしょう。

access linkは、実際の外側スコープに 'ポインタ'を内部関数に渡すために、まさにこの目的に役立ちます。

gccコンパイラはn.mは、限り、あなたはCを使用している、何のアクセスリンクが存在しないよう

+0

上記のコードをコピーしてCでコンパイルして出力しました。あなたはこれがC言語でサポートされていないと言っていますか? – vikkyhacks

+0

どの 'C'コンパイラを使用しますか? – Serge

+0

私はgccを使用していましたが、私は 'gcc -std = gnu99 -g -Wall -m32 filename.c'で実行していました – vikkyhacks

関連する問題