[英]How to open nested structure without name clash in C programming?
我想以这种方式直接打开一个结构并使用成员名称:
typedef struct{
int n;
int m;
int *A;
int *B;
type1 *slave;
} type2;
#define n this->n
#define m this->m
#define A this->A
#define B this->B
void routine2(type2 *this){
n = slave->n;
m = n + 1;
A = (int *)malloc(n * sizeof(int));
}
大多数情况下,它工作得很好,我的代码很容易阅读。 但是,上面的代码无法编译,因为slave->n
将由预处理器扩展为slave->this->n
。 我正在寻找有关如何克服这一困难的建议。 根据我的理解,如果上面的结构是一个类,那么C ++允许用户这样做,而routine2()
是一个成员函数。 我怎样才能在C中实现同样的目标?
选一个:
不要那样做。 这是对C宏系统的滥用,这种风格是非常不寻常的,你会疏远任何试图理解你的代码的人。
使用C ++。 如果您发现C ++为例如成员访问提供的语法糖是那么引人注目的,那么只需用C ++编写代码即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.