- Added missing __attribute__ ((com_interface)) for IUnknown with.
  ICOM_USE_COM_INTERFACE_ATTRIBUTE
- Small addition to comments surrounding
  ICOM_USE_COM_INTERFACE_ATTRIBUTE "option".

diff --git a/include/wine/obj_base.h b/include/wine/obj_base.h
index 9b846fe..ee2c95f 100644
--- a/include/wine/obj_base.h
+++ b/include/wine/obj_base.h
@@ -14,10 +14,16 @@
  * with the binary emulator.
  *
  * If the compiler supports the com_interface attribute, leave this off, and
- * define the ICOM_USE_COM_INTERFACE_ATTRIBUTE macro below.
+ * define the ICOM_USE_COM_INTERFACE_ATTRIBUTE macro below. This may also
+ * require the addition of the -vtable-thunks option for g++.
  *
  * If you aren't interested in WineLib C++ compatability at all, leave both
  * options off.
+ *
+ * The preferable method for using ICOM_USE_COM_INTERFACE_ATTRIBUTE macro
+ * would be to define it only for your WineLib application. This allows you
+ * to have both binary and WineLib compatibility for C and C++ at the same 
+ * time :)
  */
 /* #define ICOM_MSVTABLE_COMPAT 1 */
 /* #define ICOM_USE_COM_INTERFACE_ATTRIBUTE 1 */
@@ -698,11 +704,11 @@
 typedef struct ICOM_VTABLE(IUnknown) ICOM_VTABLE(IUnknown);
 struct IUnknown {
     ICOM_VFIELD(IUnknown);
-#if defined(ICOM_USE_COM_INTERFACE_ATTRIBUTE) && !defined(ICOM_CINTERFACE)
+#if defined(ICOM_USE_COM_INTERFACE_ATTRIBUTE)
 } __attribute__ ((com_interface)); 
 #else
 };
-#endif /* ICOM_US_COM_INTERFACE_ATTRIBUTE, !ICOM_CINTERFACE */
+#endif /* ICOM_US_COM_INTERFACE_ATTRIBUTE */
 
 struct ICOM_VTABLE(IUnknown) {
 #ifdef ICOM_MSVTABLE_COMPAT
@@ -718,7 +724,12 @@
     ICOM_METHOD2(HRESULT,QueryInterface,REFIID,riid, LPVOID*,ppvObj)
     ICOM_METHOD (ULONG,AddRef)
     ICOM_METHOD (ULONG,Release)
+#if defined(ICOM_USE_COM_INTERFACE_ATTRIBUTE)
+} __attribute__ ((com_interface)); 
+#else
 };
+#endif /* ICOM_US_COM_INTERFACE_ATTRIBUTE */
+
 #undef ICOM_INTERFACE
 
 /*** IUnknown methods ***/