digitalmars.D.learn - Converting #ifdef to version statements.
- =?ISO-8859-1?Q?Julio_C=E9sar_Carrascal_Urquijo?= (33/33) Jan 18 2006 Hi.
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (3/5) Jan 18 2006 Include them in the DFLAGS (i.e. set them in your Makefile)
- =?ISO-8859-1?Q?Julio_C=E9sar_Carrascal_Urquijo?= (5/13) Jan 18 2006 Isn't there a way to accomplish on source code only? (without modifying
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (6/8) Jan 18 2006 I haven't really found any... Walter deliberately wants to keep versions
- =?ISO-8859-1?Q?Julio_C=E9sar_Carrascal_Urquijo?= (2/14) Jan 18 2006
- Chris Sauls (15/20) Jan 18 2006 Might be time to start using the Build utility then.
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (4/6) Jan 18 2006 Build works rather poorly with GDC unfortunately.
Hi. I'm porting some headers from C that use #ifdef macros that I'm trying to translate to version statements. The macros are #defined in a "features.h" file witch is included in the others: //features.h #define FEATURE_A #define FEATURE_B #define FEATURE_C //header_a.h #include <features.h> #ifdef FEATURE_A ... #endif //header_b.h #include <features.h> #ifdef FEATURE_B ... #endif #ifdef FEATURE_C ... #endif The direct translation using "version = FEATURE_A" doesn't work. I remember Walter saying some time ago that version definitions like this only affected modules imported by the module that defined them. I understand why, but in this case I would at least be able to do something like: version (features.FEATURE_A) { ... } So in this case, what should I do? Any one knows a work around this limitation? Thanks
Jan 18 2006
Julio César Carrascal Urquijo wrote:So in this case, what should I do? Any one knows a work around this limitation?Include them in the DFLAGS (i.e. set them in your Makefile) --anders
Jan 18 2006
Isn't there a way to accomplish on source code only? (without modifying the command line). This is a library and I don't want the users to add a bunch of defines to the command line each time they link to it. Anders F Björklund wrote:Julio César Carrascal Urquijo wrote:So in this case, what should I do? Any one knows a work around this limitation?Include them in the DFLAGS (i.e. set them in your Makefile) --anders
Jan 18 2006
Julio César Carrascal Urquijo wrote:Isn't there a way to accomplish on source code only? (without modifying the command line).I haven't really found any... Walter deliberately wants to keep versions much simpler than #defines. This also means it doesn't work similarly ? I'm afraid I've resorted to copy/paste and other such dirty workarounds. No idea how it would work, if one ever wanted to port e.g. "autoconf" ? --anders
Jan 18 2006
I understand and thanks for your help. Anders F Björklund wrote:Julio César Carrascal Urquijo wrote:Isn't there a way to accomplish on source code only? (without modifying the command line).I haven't really found any... Walter deliberately wants to keep versions much simpler than #defines. This also means it doesn't work similarly ? I'm afraid I've resorted to copy/paste and other such dirty workarounds. No idea how it would work, if one ever wanted to port e.g. "autoconf" ? --anders
Jan 18 2006
Julio César Carrascal Urquijo wrote:Isn't there a way to accomplish on source code only? (without modifying the command line). This is a library and I don't want the users to add a bunch of defines to the command line each time they link to it.Might be time to start using the Build utility then. http://trac.dsource.org/projects/build Of course the downside is that, assuming the library is recompiled by users, they will also need to use Build. Unless Walter randomly decides to make pragma(export_version) a standard D'ism. -- Chris Sauls
Jan 18 2006
Chris Sauls wrote:Might be time to start using the Build utility then. http://trac.dsource.org/projects/buildBuild works rather poorly with GDC unfortunately. Or at least it does when I try it on the Mac... --anders
Jan 18 2006