【发布时间】:2013-08-19 11:08:55
【问题描述】:
我想根据typedef 的值进行预处理器定义。
这个想法是检查index_type_t 并生成适当的INDEX_TYPE_GL 定义。
以下内容无法按预期工作。
typedef uint32_t index_type_t;
#ifdef INDEX_TYPE_GL
#undef INDEX_TYPE_GL
#endif
#if (index_type_t == uint8_t)
#define INDEX_TYPE_GL GL_UNSIGNED_BYTE
#elif (index_type_t == uint32_t)
#define INDEX_TYPE_GL GL_UNSIGNED_INT
#elif (index_type_t == uint16_t)
#deine INDEX_TYPE_GL GL_UNSIGNED_SHORT
#endif
请注意,uint8_t、uint16_t 和 uint32_t 在其他地方是独立的 typdefs,GL_UNSIGNED_BYTE 等是整数值,而不是类型。
【问题讨论】:
-
不完全是,
GL_UNSIGNED_BYTE等的值是整数。 -
您不能以这种方式使用#ifs,因为预处理器不知道 typedefs 或任何其他 C++ 构造。你可以做的是有一个 typedef 或一个 const 值取决于 index_type_t 的实际类型。
-
我该怎么做?
-
Jarod42 刚刚回答 :-)