www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Compilation constants

reply bearophile <bearophileHUGS lycos.com> writes:
In a C program I have a numeric constant SIZE (that is in [1,32]), that I can
define when I compile the code, like this:
gcc -DSIZE=14 ...

How can I do the same thing in D? The solution I have found is to put in the D
code:
version(B1) const SIZE = 1;
version(B2) const SIZE = 2;
version(B3) const SIZE = 3;
version(B4) const SIZE = 4;
...
version(B14) const SIZE = 14;
...

And then compile the D program with:
dmd -version=B14 ...
Or:
ldc -d-version=B14 ...

Do you know nicer ways to do this in D? (if there are no nicer ways, is this
simple feature worth adding to D?)

Thank you, bye,
bearophile
Nov 11 2009
parent reply "Phil Deets" <pjdeets2 gmail.com> writes:
On Wed, 11 Nov 2009 08:50:48 -0500, bearophile <bearophileHUGS lycos.com>  
wrote:

 In a C program I have a numeric constant SIZE (that is in [1,32]), that  
 I can define when I compile the code, like this:
 gcc -DSIZE=14 ...

 How can I do the same thing in D? The solution I have found is to put in  
 the D code:
 version(B1) const SIZE = 1;
 version(B2) const SIZE = 2;
 version(B3) const SIZE = 3;
 version(B4) const SIZE = 4;
 ...
 version(B14) const SIZE = 14;
 ...

 And then compile the D program with:
 dmd -version=B14 ...
 Or:
 ldc -d-version=B14 ...

 Do you know nicer ways to do this in D? (if there are no nicer ways, is  
 this simple feature worth adding to D?)

 Thank you, bye,
 bearophile
What I would probably do is generate a simple .d file right before you compile.
Nov 11 2009
parent reply "Phil Deets" <pjdeets2 gmail.com> writes:
On Wed, 11 Nov 2009 13:30:17 -0500, Phil Deets <pjdeets2 gmail.com> wrote:

 On Wed, 11 Nov 2009 08:50:48 -0500, bearophile  
 <bearophileHUGS lycos.com> wrote:

 In a C program I have a numeric constant SIZE (that is in [1,32]), that  
 I can define when I compile the code, like this:
 gcc -DSIZE=14 ...

 How can I do the same thing in D? The solution I have found is to put  
 in the D code:
 version(B1) const SIZE = 1;
 version(B2) const SIZE = 2;
 version(B3) const SIZE = 3;
 version(B4) const SIZE = 4;
 ...
 version(B14) const SIZE = 14;
 ...

 And then compile the D program with:
 dmd -version=B14 ...
 Or:
 ldc -d-version=B14 ...

 Do you know nicer ways to do this in D? (if there are no nicer ways, is  
 this simple feature worth adding to D?)

 Thank you, bye,
 bearophile
What I would probably do is generate a simple .d file right before you compile.
I'm used to using forums where I can post, look at what I wrote, then edit if necessary. To continue my thought, the file could be called constants.d and it could contain just be just one line: enum SIZE=14;
Nov 11 2009
parent reply "Phil Deets" <pjdeets2 gmail.com> writes:
On Wed, 11 Nov 2009 13:34:32 -0500, Phil Deets <pjdeets2 gmail.com> wrote:

 On Wed, 11 Nov 2009 13:30:17 -0500, Phil Deets <pjdeets2 gmail.com>  
 wrote:

 On Wed, 11 Nov 2009 08:50:48 -0500, bearophile  
 <bearophileHUGS lycos.com> wrote:

 In a C program I have a numeric constant SIZE (that is in [1,32]),  
 that I can define when I compile the code, like this:
 gcc -DSIZE=14 ...

 How can I do the same thing in D? The solution I have found is to put  
 in the D code:
 version(B1) const SIZE = 1;
 version(B2) const SIZE = 2;
 version(B3) const SIZE = 3;
 version(B4) const SIZE = 4;
 ...
 version(B14) const SIZE = 14;
 ...

 And then compile the D program with:
 dmd -version=B14 ...
 Or:
 ldc -d-version=B14 ...

 Do you know nicer ways to do this in D? (if there are no nicer ways,  
 is this simple feature worth adding to D?)

 Thank you, bye,
 bearophile
What I would probably do is generate a simple .d file right before you compile.
I'm used to using forums where I can post, look at what I wrote, then edit if necessary. To continue my thought, the file could be called constants.d and it could contain just be just one line: enum SIZE=14;
See, I need edit functionality :). s/just be just/just/
Nov 11 2009
parent reply grauzone <none example.net> writes:
Phil Deets wrote:
 On Wed, 11 Nov 2009 13:34:32 -0500, Phil Deets <pjdeets2 gmail.com> wrote:
 
 On Wed, 11 Nov 2009 13:30:17 -0500, Phil Deets <pjdeets2 gmail.com> 
 wrote:

 On Wed, 11 Nov 2009 08:50:48 -0500, bearophile 
 <bearophileHUGS lycos.com> wrote:

 In a C program I have a numeric constant SIZE (that is in [1,32]), 
 that I can define when I compile the code, like this:
 gcc -DSIZE=14 ...

 How can I do the same thing in D? The solution I have found is to 
 put in the D code:
 version(B1) const SIZE = 1;
 version(B2) const SIZE = 2;
 version(B3) const SIZE = 3;
 version(B4) const SIZE = 4;
 ...
 version(B14) const SIZE = 14;
 ...

 And then compile the D program with:
 dmd -version=B14 ...
 Or:
 ldc -d-version=B14 ...

 Do you know nicer ways to do this in D? (if there are no nicer ways, 
 is this simple feature worth adding to D?)

 Thank you, bye,
 bearophile
What I would probably do is generate a simple .d file right before you compile.
I'm used to using forums where I can post, look at what I wrote, then edit if necessary. To continue my thought, the file could be called constants.d and it could contain just be just one line: enum SIZE=14;
Or use import expressions and mixins, something like mixin("SIZE="~import("config.txt")); But actually, that's horrible.
 See, I need edit functionality :). s/just be just/just/
You can delete your posts to emulate editing...
Nov 11 2009
parent reply "Phil Deets" <pjdeets2 gmail.com> writes:
On Wed, 11 Nov 2009 13:45:17 -0500, grauzone <none example.net> wrote:
 You can delete your posts to emulate editing...
I didn't know it was possible to delete posts from a newsgroup. How do you do that? -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Nov 11 2009
parent Chris Nicholson-Sauls <ibisbasenji gmail.com> writes:
Phil Deets wrote:
 On Wed, 11 Nov 2009 13:45:17 -0500, grauzone <none example.net> wrote:
 You can delete your posts to emulate editing...
I didn't know it was possible to delete posts from a newsgroup. How do you do that?
I don't know about any other readers, but using Thunderbird just right-click the message header, and there will be a "Cancel Message" command way down toward the bottom. -- Chris Nicholson-Sauls
Nov 12 2009