Softice was nice enough to give me some assembler for something which I was converting to C. In the first stages of doing so, I turned JMP instructions into gotos.

Now, VC++6 had a problem. For some odd reason, the gotos weren't going to the right place! Clearly in the code the labels were placed correctly and the gotos were asking for those places, but stepping through in the debugger went to completely the wrong spot.

the work around:
#define goto _asm JMP
placed above the functions completely changed things. I redefined goto to do exactly what I've always thought goto did in the first place. Now the function worked.

Can anyone explain the phenomenon?