【问题标题】:What does '0xDEAD' mean in the following code?以下代码中的“0xDEAD”是什么意思?
【发布时间】:2014-11-02 08:33:48
【问题描述】:

有一个枚举结构,但是我不明白这个枚举中'0xDEAD - 2'的含义。

enum TerminatedTypes {
    _not_terminated = 0xDEAD - 2,
    _thread_exiting,                            
    _thread_terminated,                          
    _vm_exited                                   
};

从上面的代码,我能得到什么样的好处?

上面的代码在openjdk8的'hotspot/src/share/vm/runtime/thread.hpp'中。

我正在研究jdk的源代码,请帮助我。

【问题讨论】:

  • 这只是一个选定的哨兵值,因为它的十六进制表示看起来很酷。
  • 这是magic number 的一个例子。另一个是0xCAFEBABE
  • _thread_terminated 表示已死而 _not_terminated 已死 - 2. 我想将单词 dead 与十六进制数字 0xDEAD 匹配是程序员的技巧。也许更有意义和可读性!

标签: enums magic-numbers sentinel


【解决方案1】:

这是一个十六进制文字,被用作引人注目的对象(在调试器中很有用),因此 _thread_terminated 的值将是 0xDEAD(“终止线程”等于“死”)。

人们使用大量的十六进制文字来处理类似的事情,例如the Jargon file 中的DEADBEEF,等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多