|  | @@ -1125,7 +1125,15 @@ mg_atomic_inc(volatile ptrdiff_t *addr)
 | 
	
		
			
				|  |  |  #if defined(_WIN64) && !defined(NO_ATOMICS)
 | 
	
		
			
				|  |  |  	ret = InterlockedIncrement64(addr);
 | 
	
		
			
				|  |  |  #elif defined(_WIN32) && !defined(NO_ATOMICS)
 | 
	
		
			
				|  |  | +#ifdef __cplusplus
 | 
	
		
			
				|  |  | +	/* For C++ the Microsoft Visual Studio compiler can not decide what
 | 
	
		
			
				|  |  | +	 * overloaded function prototpye in the SDC corresponds to "ptrdiff_t". */
 | 
	
		
			
				|  |  | +	static_assert(sizeof(ptrdiff_t) == sizeof(LONG), "Size mismatch");
 | 
	
		
			
				|  |  | +	static_assert(sizeof(ptrdiff_t) == sizeof(int32_t), "Size mismatch");
 | 
	
		
			
				|  |  | +	ret = InterlockedIncrement((LONG *)addr);
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  |  	ret = InterlockedIncrement(addr);
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  |  #elif defined(__GNUC__)                                                        \
 | 
	
		
			
				|  |  |      && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 0)))           \
 | 
	
		
			
				|  |  |      && !defined(NO_ATOMICS)
 | 
	
	
		
			
				|  | @@ -1148,7 +1156,14 @@ mg_atomic_dec(volatile ptrdiff_t *addr)
 | 
	
		
			
				|  |  |  #if defined(_WIN64) && !defined(NO_ATOMICS)
 | 
	
		
			
				|  |  |  	ret = InterlockedDecrement64(addr);
 | 
	
		
			
				|  |  |  #elif defined(_WIN32) && !defined(NO_ATOMICS)
 | 
	
		
			
				|  |  | +#ifdef __cplusplus
 | 
	
		
			
				|  |  | +	/* see mg_atomic_inc */
 | 
	
		
			
				|  |  | +	static_assert(sizeof(ptrdiff_t) == sizeof(LONG), "Size mismatch");
 | 
	
		
			
				|  |  | +	static_assert(sizeof(ptrdiff_t) == sizeof(int32_t), "Size mismatch");
 | 
	
		
			
				|  |  | +	ret = InterlockedDecrement((LONG *)addr);
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  |  	ret = InterlockedDecrement(addr);
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  |  #elif defined(__GNUC__)                                                        \
 | 
	
		
			
				|  |  |      && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 0)))           \
 | 
	
		
			
				|  |  |      && !defined(NO_ATOMICS)
 |