sky*_*ree 0 c++ syntax typedef
"
typedef NOT_LP64(uint16_t) LP64_ONLY(uint32_t) idx_t;
"是什么意思?
代码来自jdk8 , taskqueue.hpp
.
我不明白上面的语法.
我找到了很多解释typedef type name
,但他们没有解释上述情况.
NOT_LP64
并LP64_ONLY
在macro.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)
当您评估这些宏时,代码将成为其中之一
typedef uint16_t idx_t;
Run Code Online (Sandbox Code Playgroud)
要么
typedef uint32_t idx_t;
Run Code Online (Sandbox Code Playgroud)
取决于的价值_LP64
.两者都只有一种类型.
通常,这些宏可用于仅在一种情况下运行代码.在这种特定情况下,所讨论的"代码"只是一种类型.