"
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
答案 0 :(得分:7)
评估这些宏时,代码将变为
typedef uint16_t idx_t;
或
typedef uint32_t idx_t;
取决于_LP64
的值。这两种只有一种类型。
通常,这些宏可用于仅在一种情况下运行代码。在这种特定情况下,所讨论的“代码”只是一种类型。