Search code examples
mql4

Metatrader MQL4: Can't define function default values in .mqh file


I can't understand how to define default values for functions in my library. Default values tend to be ignored and I get "wrong parameters count" error message.

Here is my example. I created simple test library experts\libraries\test.mq4:

void test(int i = 0) // Note the default value for "i"
{
}

Then I created .mqh file as experts\include\test.mqh:

#import "test.ex4"
void test(int i = 0); // Note the default value for "i"
#import

Now I create simple expert "experts\simpletest.mq4":

#include <test.mqh>
int start()
{
    // Should be able to call test() function without providing any arguments,
    // because it has default value.
    // If I change this line to test(0), everything compiles correctly
    test(); // Causes "wrong parameters count" compilation error

    return(0);
}

And I get the following error for test() function call:

')' - wrong parameters count

If I change this function call to test(0), everything compiles, but I should be able to call test() function without providing any parameters, because I have default value for first parameter in .mqh file, like this: void test(int i = 0); Why it doesn't use the default value?

I search google for any clue, but can't find any references about this problem. Anybody knows?


Solution

  • This is not possible as stated in the MQL Documentation:

    MQL4-library functions imported within other modules cannot have parameters initialized by default values.