On 14 April 2012 11:36, Walter Bright <newshou...@digitalmars.com> wrote:
> On 4/14/2012 1:01 AM, Vladimir Panteleev wrote: > >> On Saturday, 14 April 2012 at 02:46:03 UTC, Walter Bright wrote: >> >>> all assert(exp) does when it trips is call a function in the library. If >>> you >>> provide your own version of that function, the one in the library won't >>> be >>> linked in. >>> >> >> This indeed works, but how exactly? In what case does the linker pick one >> function (which?) and in what case does it complain about duplicate symbol >> definitions? Do they have to be in different libraries? >> > > The linker works by looking in the library for any unresolved symbols. The > symbol is not unresolved if you supply your own explicitly in an object > file explicitly supplied to the linker. > > The linker knows nothing about D, C, assembler, or anything but resolving > symbols. > How do you define 'the' linker? Is this also how ld and link.exe works?