以下是引用吹水佬在2017-5-18 10:51:08的发言:
获得成员数量,应是为了遍历结构成员。
通用链表,就要自己去解释不同链表的数据结构,这方面工作编译器应该是帮不了。
编译器只会将合法的变量名用符号表示并放到“符号表”中,每个符号对应一个地址。当调用此变量时,在符号表找对应的地址进行操作。
简单的可试试用宏,宏也算是一种解释执行吧。
我觉得“链表”应该是这么使用
#define LIST_NODE_TYPE int
#include "your_list.h"
typedef struct foo
{
int a;
double b;
} foo;
#define LIST_NODE_TYPE foo
#include "your_list.h"
int main( void )
{
your_list_int a;
a.push_back( 1 );
a.push_back( 2 );
int tmp = a.back();
your_list_foo b;
b.push_back( foo{1,1.1} );
b.push_back( foo{2,2.2} );
foo temp = b.back();
}
作为链表实现者,应该完全不用关心node类型是什么,一切都交给编译器。