我想寫一個宏,它將所有東西都轉換成void *甚至成員函數。 下面是代碼:在C++ asm塊作爲宏
#define toVoidStar(xx,yy)\
__asm push ecx; \
__asm mov ecx, yy; \
__asm mov [xx], ecx; \
__asm pop ecx;
結束它給我「稱之爲」錯誤:錯誤C2017:非法逃逸
,如果我在代碼中使用它,它只是正常工作:
void * myvoid;
__asm
{
push ecx;
mov ecx, imageMousePressed;
mov [myvoid], ecx;
pop ecx;
}
我知道這不是一個很好的解決方案,但無論如何,任何人都可以幫助它得到它的工作?
你能詳細說明你爲什麼要這樣做嗎? void *(void指針)可能沒有任何彙編器。 –
由於彙編分號而不起作用。也許你應該嘗試將它改寫爲模板函數。 – akalenuk