有没有一种方法可以编写一个C宏,将指针类型如float*
转换成,即float_ptr
。
下面的示例演示了我要执行的操作:
#define TOT(x) mydata_##x##_t
#define DECLARE(X) typedef TOT(X) { X* p; };
DECLARE(float) // same as typedef mydata_float_t { float* p; };
TOT(float) v; // same as mydata_float_t v;
但对于指针类型,此代码失败:
DECLARE(float*) // should be typedef mydata_float_ptr_t { float** p; };
TOT(float*) u; // should be mydata_float_ptr_t u;
如何更改
TOT
宏来处理*
并将其替换为例如_ptr
? 最佳答案
你不能为指针类型制作单独的maros吗?
#define TOTP(x) mydata_##x##_ptr
#define DECLARE_PTR(X) typedef TOTP(X) { X** p; };
DECLARE_PTR(float) // same as typedef mydata_float_ptr { float** p; };
TOTP(float) v; // same as mydata_float_ptr v;
关于c - 如何编写一个将float *转换为float_ptr的C宏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20804513/