我用 g++ 编译,我的代码中有一些数据结构:
typedef struct {
int member;
// [...]
} Record;
class Data {
Record * records;
// [...]
static int method(const void * ptr);
};
然后第一个版本有效:
int Data::method(const void * ptr) {
Record * rec_1 = (Record *) ptr;
return rec_1->member;
}
第二个版本没有:
int Data::method(const void * ptr) {
__typeof__(records) * rec_1 = (__typeof__(records) *) ptr;
return rec_1->member;
}
并引发错误:
error: request for member ‘member’ in ‘* rec_1’, which is of non-class type ‘Record*’
我是__typeof__
宏,因为它让我不用担心它们是什么类型records
。是否可以保留__typeof__
宏并能够访问结构的成员?