有没有一种方法可以编写一个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/

10-11 16:41