On Monday, 20 June 2016 at 06:35:32 UTC, Jacob Carlborg wrote:
On 2016-06-19 21:53, Gary Willoughby wrote:
When compiling, what exactly does the -betterC flag do? The command help says "omit generating some runtime information and helper functions" but
what does this really mean? Is there any specifics somewhere?


It is intended to allow you to link an application without druntime. A Hello World using "extern(C) main" and printing using "printf" contains the following symbols on OS X:

00000000000000a8 S _D4main12__ModuleInfoZ
0000000000000068 T _D4main15__unittest_failFiZv
0000000000000018 T _D4main7__arrayZ
0000000000000040 T _D4main8__assertFiZv
00000000000000b5 s _TMP1
                 U __d_arraybounds
                 U __d_assert
                 U __d_unittest
0000000000000000 T _main
                 U _printf

If compiled with -betterC, it contains these:

0000000000000000 T _main
                 U _printf

I get significantly more symbols than that when compiling the following program any idea why?

    import core.stdc.stdio;

    extern(C) void main()
    {
        printf("Hello World!\n");
    }


$ rdmd --build-only --force -betterC -de -O -inline -release -w test.d
$ nm test

Reply via email to