2014-03-04 36 views
0

我被迫在windows 98 se中运行一些应用程序。 vc6有奇怪InterlockedCompareExchange定义:Windows 98环境下的InterlockedCompareExchange

void* InterlockedCompareExchange(void**, void*, void*); 

msdn定义它像这样但是,(因为windows xp):

LONG InterlockedCompareExchange(LONG*, LONG, LONG); 

有谁还记得如何使用它(我需要原子得到互锁变量的值)?

+0

IIRC,也不要紧。 – MSalters

+2

@ MSalters:当然可以。 –

+0

@MSalters'win98'有线程,它还有其他'Interlocked *'函数。 – Ivars

回答

0

Windows 98不支持64位,所以void*LONG是相同的字节大小。大多数操作系统实际使用LONG定义,但如果VC6使用`无效*然后只需键入铸在需要的地方:反正Win98下没有主题:

LONG value; 
LONG ret = (LONG) InterlockedCompareExchange((void**)&value, (void*)ExchangeValue, (void*)CompareValue);