C++ 为什么是enum';我程序中的s有奇怪的值131075?

C++ 为什么是enum';我程序中的s有奇怪的值131075?,c++,C++,我会调试以下代码: result = conn_process(conn, 1, 0); if (result == CG_ERR_OK) continue; if (result == CG_ERR_TIMEOUT) { break; // i'm here! } 在调试器中,我处于中断状态我假设result==CG\u ERR\u TIMEOUT为真。在当地人身上,我确实看到: result 131075 unsigned int CG_ERR_TIMEO

我会调试以下代码:

result = conn_process(conn, 1, 0);
if (result == CG_ERR_OK) continue;
if (result == CG_ERR_TIMEOUT)
{
    break;   // i'm here!
}
在调试器中,我处于
中断状态
我假设
result==CG\u ERR\u TIMEOUT
为真。在当地人身上,我确实看到:

    result  131075  unsigned int
    CG_ERR_TIMEOUT  error: identifier 'CG_ERR_TIMEOUT' out of scope 
在Watch中,我确实看到:

    result  131075  unsigned int
    CG_ERR_TIMEOUT  error: identifier 'CG_ERR_TIMEOUT' out of scope 
转到“定义”向我显示这样的代码:

enum {
CG_ERR_OK = 0,
CG_ERR_INTERNAL = CG_RANGE_BEGIN,
CG_ERR_INVALIDARGUMENT,
CG_ERR_UNSUPPORTED,
CG_ERR_TIMEOUT,
CG_ERR_MORE,
CG_ERR_INCORRECTSTATE,
CG_ERR_DUPLICATEID,
CG_ERR_BUFFERTOOSMALL,
CG_ERR_OVERFLOW,
CG_ERR_UNDERFLOW,
CG_RANGE_END
};

所以我只是想知道为什么CG_ERR_TIMEOUT==131075。这是一个多么奇怪的数字啊?

因为CG\u范围\u开始是131072(0x20000)

从现在起,每个枚举值都是前一个加1:

    CG_ERR_INVALIDARGUMENT,             // == 131072 + 1 = 131073
    CG_ERR_UNSUPPORTED,                 // == 131073 + 1 = 131074
    CG_ERR_TIMEOUT,                     // == 131074 + 1 = 131075
    CG_ERR_MORE,                        // etc.
    CG_ERR_INCORRECTSTATE,
    CG_ERR_DUPLICATEID,
    CG_ERR_BUFFERTOOSMALL,
    CG_ERR_OVERFLOW,
    CG_ERR_UNDERFLOW,
    CG_RANGE_END

};

因为CG_范围_BEGIN是131072(即0x20000)

从现在起,每个枚举值都是前一个加1:

    CG_ERR_INVALIDARGUMENT,             // == 131072 + 1 = 131073
    CG_ERR_UNSUPPORTED,                 // == 131073 + 1 = 131074
    CG_ERR_TIMEOUT,                     // == 131074 + 1 = 131075
    CG_ERR_MORE,                        // etc.
    CG_ERR_INCORRECTSTATE,
    CG_ERR_DUPLICATEID,
    CG_ERR_BUFFERTOOSMALL,
    CG_ERR_OVERFLOW,
    CG_ERR_UNDERFLOW,
    CG_RANGE_END

};

显然,
conn_进程
返回131075什么是
CG_范围_开始
?131075=0x200003,所以我猜CG\u RANGE\u BEGIN=0x20000?啊,现在我明白了<代码>#定义CG#u范围(u BEGIN 0x20000)也许这个问题可以被删除。对于这样愚蠢的问题,从c#/java到c++真的很难,而且VS2012在监视窗口中不显示CG#u ERR_TIMEOUT值也不方便。显然
连接进程
返回131075什么是
CG#u范围(u BEGIN
?131075=0x200003,所以我猜CG\u RANGE\u BEGIN=0x20000?啊,现在我明白了<代码>#定义CG#u范围_开始0x20000问题可能会被删除。对于这样愚蠢的问题,很难从c#/java迁移到c++,而且VS2012在监视窗口中不显示CG#u ERR#u超时值也不方便。