2

メインアプリケーションにアクセスさせたいこのようなルーチンがある場合...

    char* get_widget_name(widget_t* w) {
        return name(w);
    }

次の両方のマクロは、明らかにget_widget_name内で使用しながら「非表示」にします

    #define GET_WIDGET(self) (&(self)->base.widget)
    #define name(self)      (GET_WIDGET(self)->name)

私は基本的に、構造体でユニオンを使用して、CでのC++継承を「エミュレート」しています。

4

1 に答える 1