![]() |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Scope is a term defining where a function or variable declaration is valid. Since programs are read top down, left right (just like you read this page), declarations of functions and variables are available to the right and below of the actual declaration. However, the scope might be limited.
A variable that is declared inside a function is only valid until the block
terminator (the terminating }
) for that variable is reached.
< top of file > int GlobCount; // Only GlobCount is available here void var_func(int arg) { int var_1; // GlobCount, arg and var_1 is available here < code > { string var_2; // GlobCount, arg, var_1 and var_2 is available in this block < code > } // GlobCount, arg and var_1 is available here < code > { int var_2; mapping var_3; // GlobCount, arg, var_1, var_2 and var_3 is available here // NB this var_2 is a NEW var_2, declared here < code > } // GlobCount, arg and var_1 is available here < code > } // Here only GlobCount (and the function var_func) is available |
Function declarations follow the same rule, though you can't declare a function inside another function. However, suppose you have these two functions where the first uses the second:
int func_1() { < code > func_2("test"); } void func_2(string data) { < code > } |
Then you have a problem, because the first function tries to use the
second before it is declared. This will result in an error message
if you have instructed the gamedriver to require types to match by
specifying pragma strict_types
as suggested earlier. To take care
of this you can either re-arrange the functions so that func_2
comes before func_1
in the listing, but this might not always be
possible and the layout might suffer. Better then is to write a
function prototype. The function prototype should be placed in
the top of the file after the inherit
and #include
statements (described later) but before any code and look
exactly as the function declaration itself. In this case:
< top of file, |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |