Avoid compile time evaluation
Andrea Fontana
nospam at example.com
Fri Apr 13 06:56:10 PDT 2012
That's strange, so why writeln make it compile faster? :)
I can't post the code, i'll try to reproduce it...
On Friday, 13 April 2012 at 13:01:03 UTC, Simen Kjaeraas wrote:
> On Fri, 13 Apr 2012 14:52:05 +0200, Andrea Fontana
> <nospam at example.com> wrote:
>
>> If I have something like:
>>
>> static int var = myFunction();
>>
>> dmd will evaluate myFunction() at compile time. If it can't,
>> it gives me a compile error, doesn't it? If I'm not wrong,
>> static force this.
>
> Indeed.
>
>
>> If i don't use static, dmd will try to evaluate myfunction()
>> at compile time, and if it can't, myfunction() will be
>> executed at runtime, right?
>
> No. static or enum forces evaluation at compiletime, otherwise
> it's runtime.
> Conceivably, the compiler could try running every function at
> compile-time
> as an optimization, but that would completely destroy the nice
> compilation
> times we like to brag about, and likely also break a lot of
> code.
>
>
>> So I have a code like this:
>>
>> ...
>> // Here some code to debug/fix...
>> // Here some code to debug/fix...
>> // Here some code to debug/fix...
>> // Here some code to debug/fix...
>> ...
>> static int var = myVeryVeryComplexFunction();
>>
>> If i have to work to some code before my complex function,
>> every time I have to re-compile code, it takes a lot because
>> dmd evalute at compile time myVeryVeryComplexFunction() also
>> if i don't use static. Does a keyword to force runtime
>> evaluation exists? I can't find any documentation (neither on
>> static used in this way, any link?)...
>
> See above. Runtime evaluation is the default, and compile-time
> needs to be
> forced.
More information about the Digitalmars-d-learn
mailing list