There is a small bug in the MQL preprocessor. Please analyse the following code snippet.
#define name_0 Michael #define name_1 J #define name_2 Fox #define defer(x) x #define paste(x_0, x_1, x_2) x_0##x_1##x_2 #define paste_2(x_0, x_1, x_2) paste(x_0, x_1, x_2) #define CamelCase_name_0(x_0, x_1, x_2) x_0##x_1##x_2 #define CamelCase_name_1(x_0, x_1, x_2) paste(x_0, x_1, x_2) #define CamelCase_name_2(x_0, x_1, x_2) paste_2(x_0, x_1, x_2) #define CamelCase_name_3(x_0, x_1, x_2) defer(x_0)##defer(x_1)##defer(x_2) #define CamelCase_name_4(x_0, x_1, x_2) defer(x_0)defer(x_1)defer(x_2) #define CamelCase_name_5(x_0, x_1, x_2) paste(defer(x_0), defer(x_1), defer(x_2)) #define CamelCase_name_6(x_0, x_1, x_2) paste_2(defer(x_0), defer(x_1), defer(x_2)) #define MichaelJFox 1961 void f() { PrintFormat("The year of birth is %d.\n", CamelCase_name_0(name_0, name_1, name_2)); //With Visual C++: `name_0name_1name_2'. With MQL: `1961'. PrintFormat("The year of birth is %d.\n", CamelCase_name_1(name_0, name_1, name_2)); //With Visual C++: `1961'. With MQL: `1961'. PrintFormat("The year of birth is %d.\n", CamelCase_name_2(name_0, name_1, name_2)); //With Visual C++: `1961'. With MQL: `1961'. PrintFormat("The year of birth is %d.\n", CamelCase_name_3(name_0, name_1, name_2)); //With Visual C++: `1961'. With MQL: error. PrintFormat("The year of birth is %d.\n", CamelCase_name_4(name_0, name_1, name_2)); //With Visual C++: `1961'. With MQL: error. PrintFormat("The year of birth is %d.\n", CamelCase_name_5(name_0, name_1, name_2)); //With Visual C++: `MichaelJFox'. With MQL: `1961'. PrintFormat("The year of birth is %d.\n", CamelCase_name_6(name_0, name_1, name_2)); //With Visual C++: `1961'. With MQL: `1961'. return; }
228841
The MetaTrader 4 platform update will be released on Thursday, November 26, 2020. This version provides error fixes and platform stability improvements.
The new build will be available through the Live Update system.