forked from rosh/MQL5Book
40 lines
1.6 KiB
MQL5
40 lines
1.6 KiB
MQL5
//+------------------------------------------------------------------+
| |
//| ExternMain.mq5 |
| |
//| Copyright 2021, MetaQuotes Ltd. |
| |
//| https://www.mql5.com |
| |
//+------------------------------------------------------------------+
| |
| |
#define PRT(A) Print(#A, "=", (A))
| |
| |
// Uncomment the following directive
| |
// to #include common header with 'int x' definition
| |
// instead of extern declarations
| |
// #define USE_INCLUDE_WORKAROUND
| |
| |
#include "ExternHeader1.mqh"
| |
#include "ExternHeader2.mqh"
| |
| |
// the next definition is required for all and every extern variables declared ealier
| |
// otherwise we'll get compilation errors
| |
int x = 2; // if necessary, set specific initial value to 'x'
| |
// NB: if USE_INCLUDE_WORKAROUND is enabled,
| |
// the above definition becomes an error, because
| |
// non-extern int x is defined in other place: ExternCommon.mqh
| |
| |
long y; // the type must correspond to previous extern declaration in ExternHeader1.mqh
| |
| |
// the next definition duplicates definition from ExternHeader1.mqh
| |
// and since they both are not extern, we've got the error:
| |
// short z; // variable already defined
| |
| |
//+------------------------------------------------------------------+
| |
//| Script program start function |
| |
//+------------------------------------------------------------------+
| |
void OnStart()
| |
{
| |
inc(); // use x
| |
dec(); // use x
| |
PRT(x); // 2
| |
PRT(y); // 0
| |
}
| |
//+------------------------------------------------------------------+
|