On Monday, 18 August 2014 at 13:51:14 UTC, nrgyzer wrote:
Hi all,

I've the following code snipped:

import std.bigint;
void main(string[] args)
{
        BigInt i = "12345";
        if (args.length > 1)
        {
                goto Exit;
        }
        i = BigInt("67890");
        Exit:
                return;
}

For what it's worth, whenever you have "goto-end" style code, place all your code in a proper block, in such a way that all your variable declarations are in that block, and all your gotos break out of this block. This way, a goto will *never* cross a declaration, so coding is easy. The only variables you place at the top or the ones that could need cleanup.

void main(string[] args)
{
        //Declarations that need cleanup:
        void* p;

        //Code
        {
                BigInt i = "12345"; //Local variable
                if (args.length > 1)
                {
                        goto Exit; //Breaks out of block
                }
                i = BigInt("67890");
                BigInt j = "54321"; //Local variable
        }

        //End
        Exit:
                CleanUp(p);
                return;
}

Reply via email to