Code::Blocks Forums

Developer forums (C::B DEVELOPMENT STRICTLY!) => Development => Topic started by: afb on March 29, 2007, 09:11:34 am

Title: #defines and D language
Post by: afb on March 29, 2007, 09:11:34 am
Seems like the compiler options dialog doesn't work well when setting "" as the #define flag...

Since there are no #defines in the D language (only in C/C++), there is no proper value for the flag. I set it to a bogus value and it "works", but not sure if that's the best workaround ? But before we have support for multiple programming languages, it might do. (at least it closes the bug reported with the compiler interface...)

http://www.algonet.se/~afb/wx/codeblocks-svn-dmddefines.patch
Title: Re: #defines and D language
Post by: mandrav on March 29, 2007, 02:41:13 pm
Your patch seems to do the trick. If you tested it and it works too, then just commit it.
Better support for other languages/compilers will come after version 1.0 is released.

I would just use a more descriptive name for the switch instead of "\a". Something like "NoDefinesAllowed" :).
Title: Re: #defines and D language
Post by: afb on March 30, 2007, 10:42:01 am
OK, that's a better name... :-)

But I thought of something else, D doesn't have #defines but it does have "versions (http://www.digitalmars.com/d/version.html)". So instead of just making that area unusable, we might rename the field for defines into versions when setting it for a D compiler. Then it's just a matter of using the -version or -fversion compiler switches...

So where for C/C++ you would set "__WXMAC__" and it would pass -D__WXMAC__ to the compiler, in D you would set "__WXMAC__" and it would pass -version=__WXMAC__ to it.

This define/version is then used by the conditionally compiled code like:
Code: c++
#ifdef __WXMAC__
    ....
#endif

Code: d
version (__WXMAC__)
{
    ....
}

http://www.algonet.se/~afb/wx/codeblocks-svn-dmdversions.patch