c - 带有预处理器指令的指针
问题描述
处理我看到的代码:
#define X(i) ((array[i]).x[0])
#define Y(i) ((array[i]).y[0])
typedef struct {
int x[2];
int y[2];
} coord_t;
coord_t* array = malloc(sizeof(coord_t)* 10);
int myX = X(5);
这使得访问array
几乎硬编码的 withX
和Y
preprocessor 指令。我想做的是将指针传递给预处理器指令,例如:
#define X(myarray,i) myarray[i].x[0]
哪里myarray
可以是任何coord_t
指针:
coord_t* a = malloc(sizeof(coord_t)* 4);
coord_t* b = malloc(sizeof(coord_t)* 12);
int myX = X(a,1);
int myotherX = X(b,6);
我已经这样做了,它编译没有任何错误,但是我没有得到相同的结果。我的问题是,我可以#define X
这样吗?
解决方案
#define X(myarray,i) myarray[i].x[0]
推荐阅读
- angular - lib/lib.d.ts 错误找不到名称“对象”
- firebase - Google Analytics 数据迁移到 Google Analytics for Firebase (Firebase)
- webview - Webview reloadIgnoringCache() 不工作
- selenium - nodejs selenium如何在输入新值之前避免driver.sleep
- javascript - 如何在 sequelize findAll() 中获取简单数组?
- java - 如何在 Java 中编辑图像的格式?
- c++ - 在字段宽度内以最大精度输出浮点数
- c - GCC 警告没有强制转换,而 MSVC 警告有强制转换,为什么?
- blockchain - rinkeby 网络上 sendRawTransaction 的 Gas 问题
- api - Azure API 网关未将 cookie 传递给 api