什么是多个类型到一个别名的typedef?

时间:2017-06-02 18:19:47

标签: c++ syntax typedef

" typedef NOT_LP64(uint16_t) LP64_ONLY(uint32_t) idx_t; "意思?

代码来自jdk8,taskqueue.hpp

我不理解上面的语法。

我找到了很多关于typedef type name的解释,但他们没有解释上述情况。

NOT_LP64LP64_ONLYmacro.hpp文件中定义。

#ifdef  _LP64
#define LP64_ONLY(code) code
#define NOT_LP64(code)
#else  // !_LP64
#define LP64_ONLY(code)
#define NOT_LP64(code) code
#endif // _LP64

1 个答案:

答案 0 :(得分:7)

评估这些宏时,代码将变为

typedef uint16_t idx_t;

typedef uint32_t idx_t;

取决于_LP64的值。这两种只有一种类型。

通常,这些宏可用于仅在一种情况下运行代码。在这种特定情况下,所讨论的“代码”只是一种类型。