checkedint call removal
John Colvin via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jul 29 03:50:33 PDT 2014
On Tuesday, 29 July 2014 at 10:13:45 UTC, Dicebot wrote:
> This is one of problems. When writing library function you
> don't exactly know if input is going to be user input. Use
> enforces - and it won't be possible to optimize away redundant
> checks. Use assertions and issue may slip uncaught.
I have taken to using versions and enforce for this. Something
like:
version(noChecks){} else
{
version = checks;
}
void foo(int a)
{
version(checks) enforce(a > 0);
// do work
}
so the user of the library has to explicitly disable the checks
when compiling the library, independent of -release. Also, all
functions should document their input assumptions.
Binary libraries is a bit different though, I guess you have to
distribute 3 versions: debug, release and release-noChecks
More information about the Digitalmars-d
mailing list