version(debug)

Alex Rønne Petersen alex at lycus.org
Sat Oct 6 11:42:01 PDT 2012


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
alex at lycus.org
http://lycus.org


More information about the Digitalmars-d-learn mailing list