【发布时间】:2015-06-01 03:52:17
【问题描述】:
我在尝试在宏中表达指向某个类型的指针时遇到了问题。
举这个简单的例子。
#define INDEX_OF_DATA(data, type, index) \
((type *)data)[index]
这行得通:
INDEX_OF_DATA(buffer, float, 3);
失败的地方:
INDEX_OF_DATA(buffer, float[2], 3);
因为演员表应该是(float(*)[2])。
有没有办法表达“type 的指针”,...而不使用typeof? (这不是标准 C)。
请注意,当然还有其他方法可以使这个特定示例工作。例如,转换为 char 并偏移 sizeof(type) * index。但我对用 C 语言表达pointer to type 的方式很感兴趣。
【问题讨论】:
-
我不认为没有扩展这是可能的,但我很想知道是否有人有更好的主意。
-
c++ 在类型推断方面有更好的解决方案,但对于 C,你的选择几乎没有
标签: c c-preprocessor