std library hooks

Vladimir Panteleev vladimir at thecybershadow.net
Sat Apr 14 02:40:06 PDT 2012


On Saturday, 14 April 2012 at 08:37:36 UTC, Walter Bright 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.

So object files take priority over library files? Or does the 
linker search in command-line order (and object files simply 
happen to come first)?


More information about the Digitalmars-d mailing list