How to convert value #define'd in a macro to a char* (c++) -
in .cpp, want output file directory created @ compile time (determined time of compilation). have passed value via -dcompiletime=$(stuff time) in makefile. pass value stored in compiletime sprintf can create filepath string use place output file.
i have tried:
#define str(x) #x sprintf(filepath,"\"%s\file\"",str(compiletime)); as as
#define str(x) #x #define strname(name) str(name) sprintf(filepath,"\"%s\file\"",strname(compiletime)); but ever get
"compiletime/file" as output.
your macros fine. here's test program:
#include <stdio.h> #define str(x) #x #define strname(name) str(name) int main() { printf("\"%s/file\"\n",strname(compiletime)); return 0; } build command:
cc -wall -o soc soc.c output:
"compiletime/file" build command:
cc -wall -o soc soc.c -dcompiletime=abcd output:
"abcd/file" tested under gcc 4.9.2.
the problem facing fopen related to:
sprintf(filepath,"\"%s\file\"",strname(compiletime)); ^^^^ make that
sprintf(filepath,"\"%s\\file\"",strname(compiletime)); ^^^^ otherwise, escaping character f, nothing. should able use forward slash instead of backward slash.
sprintf(filepath,"\"%s/file\"",strname(compiletime)); ^^^^
Comments
Post a Comment