Re: Forward referencing functions in D

2020-10-16 Thread wilcro via Digitalmars-d-learn

On Friday, 16 October 2020 at 19:55:53 UTC, wilcro wrote:
The web page "Programming in D for C Programmers" 
(https://dlang.org/articles/ctod.html#forwardfunc) states that 
forward declarations are neither required nor permitted, and 
that the following construct is allowable:


void myfunc()
{
forwardfunc();
}

void forwardfunc()
{
... //do stuff
}


However, the following code will cause a compiler error:

import std.stdio: writeln;

void main()
{

void myfunc() {

forwardfunc(); // onlineapp.d(8): Error: undefined 
identifier forwardfunc

}

void forwardfunc() {

writeln("foo");
}

myfunc();

}


Evidently, I am misunderstanding something very elemental here; 
thanks for any enlightenment regarding this.





Thanks for your insights, Ali and Steve -- very helpful.


Re: Forward referencing functions in D

2020-10-16 Thread wilcro via Digitalmars-d-learn

On Friday, 16 October 2020 at 19:55:53 UTC, wilcro wrote:
The web page "Programming in D for C Programmers" 
(https://dlang.org/articles/ctod.html#forwardfunc) states that 
forward declarations are neither required nor permitted, and 
that the following construct is allowable:


void myfunc()
{
forwardfunc();
}

void forwardfunc()
{
... //do stuff
}


However, the following code will cause a compiler error:

import std.stdio: writeln;

void main()
{

void myfunc() {

forwardfunc(); // onlineapp.d(8): Error: undefined 
identifier forwardfunc

}

void forwardfunc() {

writeln("foo");
}

myfunc();

}


Evidently, I am misunderstanding something very elemental here; 
thanks for any enlightenment regarding this.




Thanks to all for your responses; as a related followup question, 
would there be any reason to avoid placing the majority of code 
for a program outside of the main function?


Forward referencing functions in D

2020-10-16 Thread wilcro via Digitalmars-d-learn
The web page "Programming in D for C Programmers" 
(https://dlang.org/articles/ctod.html#forwardfunc) states that 
forward declarations are neither required nor permitted, and that 
the following construct is allowable:


void myfunc()
{
forwardfunc();
}

void forwardfunc()
{
... //do stuff
}


However, the following code will cause a compiler error:

import std.stdio: writeln;

void main()
{

void myfunc() {

forwardfunc(); // onlineapp.d(8): Error: undefined 
identifier forwardfunc

}

void forwardfunc() {

writeln("foo");
}

myfunc();

}


Evidently, I am misunderstanding something very elemental here; 
thanks for any enlightenment regarding this.