c++ - 用于调试打印的 MS 标志中的奇怪值

标签 c++ c flags

我在 Microsoft 驱动程序代码示例调试跟踪标志中看到:

#define DEBUG_TRACE_ERROR                           0x00000001  // Errors - whenever we return a failure code
#define DEBUG_TRACE_LOAD_UNLOAD                     0x00000002  // Loading/unloading of the filter
#define DEBUG_TRACE_INSTANCES                       0x00000004  // Attach / detatch of instances

#define DEBUG_TRACE_METADATA_OPERATIONS             0x00000008  // Operation to access / modify in memory metadata

#define DEBUG_TRACE_ALL_IO                          0x00000010  // All IO operations tracked by this filter

#define DEBUG_TRACE_INFO                            0x00000020  // Misc. information

#define DEBUG_TRACE_ALL                             0xFFFFFFFF  // All flags

据我所知,标志应该是 2 的幂(如 1、2、4、8、16、32)才能不相交。 但为什么 DEBUG_TRACE_ALL_IO 是 10 而 DEBUG_TRACE_INFO 是 20 而不是 16 和 32?

最佳答案

因为这段代码中的值是十六进制的。 0x10 = 16。

关于c++ - 用于调试打印的 MS 标志中的奇怪值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35624310/

相关文章:

c - Valgrind:在 C 中释放链接列表时,大小 8 的读取无效

c# - 如何确定枚举值是否具有一个或多个与之比较的值?

c# - 如何有效地验证代表标记枚举的整数?

c++ - SSE 加载/存储内存事务

c++ - 如何使我的项目易于设置?

c - 对库包含的函数的 undefined reference

c++ - 如果用两个变量或一个变量和一个数字文字进行加法,为什么从 C++ 调用的汇编函数会在标志中给出不同的结果?

c++ - 将引用传递给引用

c++ - 如何将 boost 矩阵 prod() 函数作为乘法函数传递?

c - 找出读取/写入读取的字符数