extern (c)

user1234 user1234 at 12.de
Wed Oct 11 17:08:30 UTC 2023


On Wednesday, 11 October 2023 at 13:36:16 UTC, Paul wrote:
> On Wednesday, 11 October 2023 at 12:54:53 UTC, user1234 wrote:
>>
>> `extern(C)` on module level functions affect the mangling and 
>> the calling convention.
>>
>> - Mangling is used by the linker to link symbols between 
>> objects.
>> - Calling convention affects the compiler backend in how code 
>> is generated for a CALL instruction.
>
> So C doesn't use name mangling

I see what you mean. I just consider no mangling as a kind of 
mangling, that is "just the symbol name".

> and extern (C) in a D prog would turn off D mangling thereby 
> allowing C and D object files to be linked together?
>
> I didn't know C and D had different calling conventions...i.e. 
> different ABI's?

They are mostly similar but according to 
https://dlang.org/spec/abi.html#function_calling_conventions 
there are differences.




More information about the Digitalmars-d-learn mailing list