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

4

您在头文件中发布要在主应用程序中使用的信息。在这个例子中,它可能是:

#ifndef WIDGET_H_INCLUDED
#define WIDGET_H_INCLUDED

typedef struct widget widget_t;

extern char *get_widget_name(widget_t *w);

#endif /* WIDGET_H_INCLUDED */

然后在实现文件widget.c

于 2012-09-09T04:03:03.513 回答