我有一个枚举:枚举结果{OK,ERROR};-例如。
我有一个功能:

enum Result ReturnAEnumValue() {
}

f.e.公司
返回OK或ERROR。
main(){}中,我创建了一个枚举类型:
enum Result eResult;
eResult = Result();

为什么在我的调试器中,在单步执行之后,我在eResult中没有任何值?
如果我之前给一个eResult一个值,例如:
枚举结果eResult=ERROR;有效。
enum Result {OK,ERROR};
enum Result eHexStringToUInt(char pcStr[], unsigned int *puiValue) {
    unsigned char ucCharCounter;
    if ((pcStr[0] != '0' )||( pcStr[1] != 'x')||( pcStr[2]== '\0' ) || (pcStr[6] != '\0')){
        return ERROR;
    }
    *puiValue = 0;
    for (ucCharCounter = 2; ucCharCounter< 6 ; ucCharCounter++)
    {
        *puiValue = *puiValue << 4;
        if (pcStr[ucCharCounter] < 'A')
        {
            *puiValue = *puiValue | (pcStr[ucCharCounter] - '0');
        }
        else
        {
            *puiValue = *puiValue | (pcStr[ucCharCounter] - 'A' + 10);
        }
    }
    return OK;
}


int main()
{
    unsigned int uiValue = 65000;
    char cHexStr[12] = "0xF5A7";
    enum Result eReturnValue;
    eReturnValue = eHexStringToUInt(cHexStr , &uiValue);
}

A debuuger info

最佳答案

由于代码不使用此值,任何优化级别都将强制编译器对其进行优化。所以试着以某种方式使用变量(例如printf ir);

09-27 08:08