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超时值也不方便。