前后两段可是大不一样,后面一段才是正确的:
first:
1:
2: unsigned long curVersion=0;
3: unsigned long rmtVersion=0;
4: #if (wxBYTE_ORDER==wxBIG_ENDIAN)
5: SparrowGetVersion(ModuleName, (unsigned char*)&curVersion, (unsigned char*)(&curVersion+1), (unsigned char*)(&curVersion+2), (unsigned char*)(&curVersion+3));
6: (*fnRmtGetVersion)(ModuleName, (unsigned char*)&rmtVersion, (unsigned char*)(&rmtVersion+1), (unsigned char*)(&rmtVersion+2), (unsigned char*)(&rmtVersion+3));
7: #else //wxLITTLE_ENDIAN
8: SparrowGetVersion(ModuleName, (unsigned char*)(&curVersion+3), (unsigned char*)(&curVersion+2), (unsigned char*)(&curVersion+1), (unsigned char*)(&curVersion));
9: (*fnRmtGetVersion)(ModuleName, (unsigned char*)(&rmtVersion+3), (unsigned char*)(&rmtVersion+2), (unsigned char*)(&rmtVersion+1), (unsigned char*)(&rmtVersion));
10: #endif
another:
1:
2: unsigned long curVersion=0x01020304;
3: unsigned long rmtVersion=0xAABBCCDD;
4: #if (wxBYTE_ORDER==wxBIG_ENDIAN)
5: SparrowGetVersion(ModuleName, (unsigned char*)&curVersion, (unsigned char*)(&curVersion)+1, (unsigned char*)(&curVersion)+2, (unsigned char*)(&curVersion)+3);
6: (*fnRmtGetVersion)(ModuleName, (unsigned char*)&rmtVersion, (unsigned char*)(&rmtVersion)+1, (unsigned char*)(&rmtVersion)+2, (unsigned char*)(&rmtVersion)+3);
7: #else //wxLITTLE_ENDIAN
8: SparrowGetVersion(ModuleName, (unsigned char*)(&curVersion)+3, (unsigned char*)(&curVersion)+2, (unsigned char*)(&curVersion)+1, (unsigned char*)(&curVersion));
9: (*fnRmtGetVersion)(ModuleName, (unsigned char*)(&rmtVersion)+3, (unsigned char*)(&rmtVersion)+2, (unsigned char*)(&rmtVersion)+1, (unsigned char*)(&rmtVersion));
10: #endif