On 06-10-2012 20:23, Jonathan M Davis wrote:
On Saturday, October 06, 2012 20:02:13 denizzzka wrote:
huh, text should be from upper letter: Assert, Debug

No. Those are wrong. The code compiles, but those versions don't exist, so
they're not compiled in. A version(Assert) or version(Debug) block will never
be compiled in unless you define those versions. version(assert) is correct.
For instance, this prints "yes" without -release and "no" with -release:

import std.stdio;

void main()
{
     version(assert)
     {
         writeln("yes");
     }
     else
     {
         writeln("no");
     }
}

I am not seeing a compilation error with your example. What version of the
compiler are you using? Maybe version(assert) is new (I'd never heard of it
before), and your compiler is too old.

The only reason that you would see an error due to an invalid version
identifier would be if it's a keyword which isn't valid as a version identifier
(e.g. debug). The fact that the compiler doesn't know about a version
identifier doesn't produce an error. That just means that that particular block
of code isn't compiled in.

And debug isn't a valid version. It's not even in the list. The correct thing
to do is to a use a debug block. For instance, this code

import std.stdio;

void main()
{
     debug
     {
         writeln("yes");
     }
     else
     {
         writeln("no");
     }
}

will print "yes" when you compile with -debug and "no" otherwise.

- Jonathan M Davis


version (assert) is a very recent addition to the compiler and is not in 2.060.

--
Alex Rønne Petersen
a...@lycus.org
http://lycus.org

Reply via email to