1

my_reg_file関数で変数を定義しますpost_access()(この関数は、vr_ad副作用を実装するためのフックです)。

//file1.e
extend TIMER_LOAD_0 vr_ad_reg {
    post_access(direction : vr_ad_rw_t) is first {
        var my_reg_file : TIMER vr_ad_reg_file = 
        get_parents()[0].as_a(TIMER vr_ad_reg_file);

        ....  

    };
};

次に、この関数を別の e ファイルで拡張します。

//file2.e
extend TIMER_LOAD_0 vr_ad_reg {
    post_access(direction : vr_ad_rw_t) is also {
        start my_reg_file.some_tcm();
    };
};

コンパイル エラーが発生します。

*** Error: No such variable 'my_reg_file'

post_access()が変数を認識しないのはなぜmy_reg_fileですか? ご協力ありがとうございました。

注: file1.e は file2.e の前にインポートされます

4

2 に答える 2

3

さらに良いと思われる別の解決策はget_my_reg_file()、ローカル変数を使用する代わりに、目的の値を返す別のメソッドをこのサブタイプに追加することです。

于 2014-09-16T20:25:23.983 に答える
3

my_reg_file は、その特定のメソッド レイヤーのローカル変数であり、他のメソッド レイヤーとは共有されません。メソッドレイヤー間で通信する唯一の方法は次のとおりだと思います。任意のメソッドレイヤーからアクセスできる結果保存変数を使用します。b. 構造体メンバーを使用します。

于 2014-09-16T08:32:01.583 に答える