2
我的代碼有問題。當我運行代碼時,短「操作碼」的錯誤的值爲52496.所以我一步一步地調試代碼......並且當我這樣做時,「操作碼」的值爲正確值4624!有人可以給我一個提示嗎?運行給出錯誤的數字,但調試工作正常嗎?
void packet_get()
{
boost::shared_ptr<boost::array<unsigned char, 2>> opc(new boost::array<unsigned char, 2>);
recv_two_bytes(opc);
unsigned short opcode;
unsigned char * test[2];
test[0] = &opc->at(0); // *test[0] == 0x12
test[1] = &opc->at(1); // *test[1] == 0x10
opcode = 0;
int i = 0;
for(i = 0; i <= 1; i++)
{
opcode = (opcode<<8) | *(test[i]);
}
// opcode should now be short 4624
}
你有'* test [0]'和'* test [1]'的正確值嗎? 'recv_two_bytes'可能有一個未初始化的變量,在調試時運氣設置爲零,但在正常運行時設置爲隨機值。另外,在編譯器中啓用所有警告,它可能會告訴你你的問題。 – Shahbaz
經過一番嘗試...我認爲你是對的!非常感謝你! –
我會將此作爲答案發布,以便您可以接受。 – Shahbaz