ATL: What is the difference between the _ATL_DEBUG_REFCOUNT and _ATL_DEBUG_INTERFACES macros?
I have just always used _ATL_DEBUG_INTERFACES and never really considered using _ATL_DEBUG_REFCOUNT. After investigating this further, this is what I found (referring to ATL v7.1):
From Atldef.h:
#ifdef _ATL_DEBUG_REFCOUNT
#ifndef _ATL_DEBUG_INTERFACES
#define _ATL_DEBUG_INTERFACES
#endif
#endif
So, if you use _ATL_DEBUG_REFCOUNT, it is going to automatically define _ATL_DEBUG_INTERFACES for you if you haven't done so already. This is the only reference to _ATL_DEBUG_REFCOUNT in the ATL source. So, to answer the question - there is no difference.
I suspect that prior to ATL v3.0, all the _ATL_DEBUG_INTERFACES that are sprinkled throughout the ATL code were previously _ATL_DEBUG_REFCOUNT references. Then when v3.0 came along, they changed the naming convention and called it _ATL_DEBUG_INTERFACES. So, it looks like _ATL_DEBUG_REFCOUNT is there simply for ‘backward compatibility’ to ATL v2.x.