Closed majorx234 closed 7 years ago
added the diff file, sorry in the comment it looks realy ugly
See #62
which directory should I put the stage.hh.diff file to?
you have to apply the patch with the terminal command "patch"! here is a tutorial: http://www.thegeekstuff.com/2014/12/patch-command-examples/ good luck
applied PR for #62 to fix. Thanks.
get error when compiling:
In file included from src/stageros.cpp:38:0: /opt/ros/indigo/lib/cmake/Stage/../../../include/Stage-4.1/stage.hh: In member function ‘virtual void Stg::Ancestor::SetToken(const string&)’: /opt/ros/indigo/lib/cmake/Stage/../../../include/Stage-4.1/stage.hh:625:62: error: unable to find string literal operator ‘operator""m’ with ‘const char [24]’, ‘long unsigned int’ arguments
define PRINT_ERR(m) fprintf( stderr, "\033[41merr\033[0m: "m" (%s %s)\n", FILE, FUNCTION)
/opt/ros/indigo/lib/cmake/Stage/../../../include/Stage-4.1/stage.hh:725:2: note: in expansion of macro ‘PRINT_ERR’ PRINT_ERR( "Ancestor::SetToken() called with zero length string. Ignored." ); ^
~~~~ /opt/ros/indigo/lib/cmake/Stage/../../../include/Stage-4.1/stage.hh: In member function ‘virtual void Stg::Model::SetToken(const string&)’: /opt/ros/indigo/lib/cmake/Stage/../../../include/Stage-4.1/stage.hh:625:62: error: unable to find string literal operator ‘operator""m’ with ‘const char [24]’, ‘long unsigned int’ argumentsdefine PRINT_ERR(m) fprintf( stderr, "\033[41merr\033[0m: "m" (%s %s)\n", FILE, FUNCTION)
/opt/ros/indigo/lib/cmake/Stage/../../../include/Stage-4.1/stage.hh:2032:2: note: in expansion of macro ‘PRINT_ERR’ PRINT_ERR( "Model::SetToken() called with zero length string. Ignored." ); ^
~~~~ make[2]: * [CMakeFiles/stageros.dir/build.make:63: CMakeFiles/stageros.dir/src/stageros.cpp.o] Error 1 make[1]: * [CMakeFiles/Makefile2:805: CMakeFiles/stageros.dir/all] Error 2 make: *\ [Makefile:128: all] Error 2the problem is that in c++11 new string literals could be defined (e.g. operator ""m) thus the macrodefinitions won't work anymore
solved it with a patch of libstage/stage.hh:
@@ -647,46 +647,46 @@ { cont.erase( std::remove( cont.begin(), cont.end(), thing ), cont.end() ); }
// Error macros - output goes to stderr -#define PRINT_ERR(m) fprintf( stderr, "\033[41merr\033[0m: "m" (%s %s)\n", FILE, FUNCTION) -#define PRINT_ERR1(m,a) fprintf( stderr, "\033[41merr\033[0m: "m" (%s %s)\n", a, FILE, FUNCTION)
-#define PRINT_ERR2(m,a,b) fprintf( stderr, "\033[41merr\033[0m: "m" (%s %s)\n", a, b, FILE, FUNCTION) -#define PRINT_ERR3(m,a,b,c) fprintf( stderr, "\033[41merr\033[0m: "m" (%s %s)\n", a, b, c, FILE, FUNCTION) -#define PRINT_ERR4(m,a,b,c,d) fprintf( stderr, "\033[41merr\033[0m: "m" (%s %s)\n", a, b, c, d, FILE, FUNCTION) -#define PRINT_ERR5(m,a,b,c,d,e) fprintf( stderr, "\033[41merr\033[0m: "m" (%s %s)\n", a, b, c, d, e, FILE, FUNCTION) +#define PRINT_ERR(m) fprintf( stderr, "\033[41merr\033[0m: "#m" (%s %s)\n", FILE, FUNCTION) +#define PRINT_ERR1(m,a) fprintf( stderr, "\033[41merr\033[0m: "#m" (%s %s)\n", a, FILE, FUNCTION)
+#define PRINT_ERR2(m,a,b) fprintf( stderr, "\033[41merr\033[0m: "#m" (%s %s)\n", a, b, FILE, FUNCTION) +#define PRINT_ERR3(m,a,b,c) fprintf( stderr, "\033[41merr\033[0m: "#m" (%s %s)\n", a, b, c, FILE, FUNCTION) +#define PRINT_ERR4(m,a,b,c,d) fprintf( stderr, "\033[41merr\033[0m: "#m" (%s %s)\n", a, b, c, d, FILE, FUNCTION) +#define PRINT_ERR5(m,a,b,c,d,e) fprintf( stderr, "\033[41merr\033[0m: "#m" (%s %s)\n", a, b, c, d, e, FILE, FUNCTION)
// Warning macros -#define PRINT_WARN(m) printf( "\033[44mwarn\033[0m: "m" (%s %s)\n", FILE, FUNCTION) -#define PRINT_WARN1(m,a) printf( "\033[44mwarn\033[0m: "m" (%s %s)\n", a, FILE, FUNCTION)
-#define PRINT_WARN2(m,a,b) printf( "\033[44mwarn\033[0m: "m" (%s %s)\n", a, b, FILE, FUNCTION) -#define PRINT_WARN3(m,a,b,c) printf( "\033[44mwarn\033[0m: "m" (%s %s)\n", a, b, c, FILE, FUNCTION) -#define PRINT_WARN4(m,a,b,c,d) printf( "\033[44mwarn\033[0m: "m" (%s %s)\n", a, b, c, d, FILE, FUNCTION) -#define PRINT_WARN5(m,a,b,c,d,e) printf( "\033[44mwarn\033[0m: "m" (%s %s)\n", a, b, c, d, e, FILE, FUNCTION) +#define PRINT_WARN(m) printf( "\033[44mwarn\033[0m: "#m" (%s %s)\n", FILE, FUNCTION) +#define PRINT_WARN1(m,a) printf( "\033[44mwarn\033[0m: "#m" (%s %s)\n", a, FILE, FUNCTION)
+#define PRINT_WARN2(m,a,b) printf( "\033[44mwarn\033[0m: "#m" (%s %s)\n", a, b, FILE, FUNCTION) +#define PRINT_WARN3(m,a,b,c) printf( "\033[44mwarn\033[0m: "#m" (%s %s)\n", a, b, c, FILE, FUNCTION) +#define PRINT_WARN4(m,a,b,c,d) printf( "\033[44mwarn\033[0m: "#m" (%s %s)\n", a, b, c, d, FILE, FUNCTION) +#define PRINT_WARN5(m,a,b,c,d,e) printf( "\033[44mwarn\033[0m: "#m" (%s %s)\n", a, b, c, d, e, FILE, FUNCTION)
// Message macros
ifdef DEBUG
-#define PRINT_MSG(m) printf( "Stage: "m" (%s %s)\n", FILE, FUNCTION) -#define PRINT_MSG1(m,a) printf( "Stage: "m" (%s %s)\n", a, FILE, FUNCTION)
-#define PRINT_MSG2(m,a,b) printf( "Stage: "m" (%s %s)\n", a, b, FILE, FUNCTION) -#define PRINT_MSG3(m,a,b,c) printf( "Stage: "m" (%s %s)\n", a, b, c, FILE, FUNCTION) -#define PRINT_MSG4(m,a,b,c,d) printf( "Stage: "m" (%s %s)\n", a, b, c, d, FILE, FUNCTION) -#define PRINT_MSG5(m,a,b,c,d,e) printf( "Stage: "m" (%s %s)\n", a, b, c, d, e,FILE, FUNCTION) +#define PRINT_MSG(m) printf( "Stage: "#m" (%s %s)\n", FILE, FUNCTION) +#define PRINT_MSG1(m,a) printf( "Stage: "#m" (%s %s)\n", a, FILE, FUNCTION)
+#define PRINT_MSG2(m,a,b) printf( "Stage: "#m" (%s %s)\n", a, b, FILE, FUNCTION) +#define PRINT_MSG3(m,a,b,c) printf( "Stage: "#m" (%s %s)\n", a, b, c, FILE, FUNCTION) +#define PRINT_MSG4(m,a,b,c,d) printf( "Stage: "#m" (%s %s)\n", a, b, c, d, FILE, FUNCTION) +#define PRINT_MSG5(m,a,b,c,d,e) printf( "Stage: "#m" (%s %s)\n", a, b, c, d, e,FILE, FUNCTION)
else
-#define PRINT_MSG(m) printf( "Stage: "m"\n" ) -#define PRINT_MSG1(m,a) printf( "Stage: "m"\n", a) -#define PRINT_MSG2(m,a,b) printf( "Stage: "m"\n,", a, b ) -#define PRINT_MSG3(m,a,b,c) printf( "Stage: "m"\n", a, b, c ) -#define PRINT_MSG4(m,a,b,c,d) printf( "Stage: "m"\n", a, b, c, d ) -#define PRINT_MSG5(m,a,b,c,d,e) printf( "Stage: "m"\n", a, b, c, d, e ) +#define PRINT_MSG(m) printf( "Stage: "#m"\n" ) +#define PRINT_MSG1(m,a) printf( "Stage: "#m"\n", a) +#define PRINT_MSG2(m,a,b) printf( "Stage: "#m"\n,", a, b ) +#define PRINT_MSG3(m,a,b,c) printf( "Stage: "#m"\n", a, b, c ) +#define PRINT_MSG4(m,a,b,c,d) printf( "Stage: "#m"\n", a, b, c, d ) +#define PRINT_MSG5(m,a,b,c,d,e) printf( "Stage: "#m"\n", a, b, c, d, e )
endif
// DEBUG macros
ifdef DEBUG
-#define PRINT_DEBUG(m) printf( "debug: "m" (%s %s)\n", FILE, FUNCTION) -#define PRINT_DEBUG1(m,a) printf( "debug: "m" (%s %s)\n", a, FILE, FUNCTION)
-#define PRINT_DEBUG2(m,a,b) printf( "debug: "m" (%s %s)\n", a, b, FILE, FUNCTION) -#define PRINT_DEBUG3(m,a,b,c) printf( "debug: "m" (%s %s)\n", a, b, c, FILE, FUNCTION) -#define PRINT_DEBUG4(m,a,b,c,d) printf( "debug: "m" (%s %s)\n", a, b, c ,d, FILE, FUNCTION) -#define PRINT_DEBUG5(m,a,b,c,d,e) printf( "debug: "m" (%s %s)\n", a, b, c ,d, e, FILE, FUNCTION) +#define PRINT_DEBUG(m) printf( "debug: "#m" (%s %s)\n", FILE, FUNCTION) +#define PRINT_DEBUG1(m,a) printf( "debug: "#m" (%s %s)\n", a, FILE, FUNCTION)
+#define PRINT_DEBUG2(m,a,b) printf( "debug: "#m" (%s %s)\n", a, b, FILE, FUNCTION) +#define PRINT_DEBUG3(m,a,b,c) printf( "debug: "#m" (%s %s)\n", a, b, c, FILE, FUNCTION) +#define PRINT_DEBUG4(m,a,b,c,d) printf( "debug: "#m" (%s %s)\n", a, b, c ,d, FILE, FUNCTION) +#define PRINT_DEBUG5(m,a,b,c,d,e) printf( "debug: "#m" (%s %s)\n", a, b, c ,d, e, FILE, FUNCTION)
else
define PRINT_DEBUG(m)
define PRINT_DEBUG1(m,a)