Explorar el Código

cmTypeMacro: Add a class to eat the semicolon following the macro use.

Apply the same workaround to the cmCPackTypeMacro. Additionally
change that macro to not use 'class' as a macro parameter.
Stephen Kelly hace 11 años
padre
commit
4bef02e7aa
Se han modificado 2 ficheros con 6 adiciones y 4 borrados
  1. 4 3
      Source/CPack/cmCPackGenerator.h
  2. 2 1
      Source/cmStandardIncludes.h

+ 4 - 3
Source/CPack/cmCPackGenerator.h

@@ -22,9 +22,10 @@
   // Forward declarations are insufficient since we use them in
   // std::map data members below...
 
-#define cmCPackTypeMacro(class, superclass) \
-  cmTypeMacro(class, superclass); \
-  static cmCPackGenerator* CreateGenerator() { return new class; }
+#define cmCPackTypeMacro(klass, superclass) \
+  cmTypeMacro(klass, superclass); \
+  static cmCPackGenerator* CreateGenerator() { return new klass; } \
+  class cmCPackTypeMacro_UseTrailingSemicolon
 
 #define cmCPackLogger(logType, msg) \
   do { \

+ 2 - 1
Source/cmStandardIncludes.h

@@ -378,7 +378,8 @@ static thisClass* SafeDownCast(cmObject *c) \
     return static_cast<thisClass *>(c); \
     } \
   return 0;\
-}
+} \
+class cmTypeMacro_UseTrailingSemicolon
 
 inline bool cmHasLiteralPrefixImpl(const std::string &str1,
                                  const char *str2,