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

sky*_*ree 0 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
Run Code Online (Sandbox Code Playgroud)

Dan*_*l H 7

当您评估这些宏时,代码将成为其中之一

typedef uint16_t idx_t;
Run Code Online (Sandbox Code Playgroud)

要么

typedef uint32_t idx_t;
Run Code Online (Sandbox Code Playgroud)

取决于的价值_LP64.两者都只有一种类型.

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