Function prototype + definition in the same file

Timon Gehr timon.gehr at gmx.ch
Tue Sep 25 16:35:18 PDT 2012


On 09/26/2012 01:29 AM, Timon Gehr wrote:
> On 09/25/2012 01:53 PM, Manu wrote:
>> So I have this recurring pattern, it's really starting to annoy me.
>> It stems from the fact that a function prototype and the definition can
>> not appear in the same file in D (as it can in C/C++)
>> Eg,
>>
>> void func(int x); // <-- declaration of function, informs type and
>> associated names, args, ...
>>
>> //later
>> void func(int x) // <-- may be generated with magic (and may use the
>> prototype declaration for type information as declared by the prototype
>> above)
>> {
>>    ... do stuff
>> }
>>
>> I really need this. Why is it illegal? Is there chance of having this
>> supported? What are the problems?
>> ...
>
> It is illegal because nobody has written code to support it. It
> should be possible to support it. I don't think there are any problems
> with the concept.

(The implementation faces some challenges, the following is easy to get 
wrong:

module module_;

void foo();

alias foo alias1;
static if(is(typeof(alias1))){
     void foo(){}
     alias foo alias2;
}

static assert(__traits(isSame, alias1, alias2));
static assert(__traits(allMembers, module_).length == 3); // 2 alias, 1 
function definition
)


More information about the Digitalmars-d mailing list