MQL5Book/Scripts/p2/ExternMain.mq5

41 lines
1.6 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 16:09:41 +02:00
//+------------------------------------------------------------------+
//| 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
}
//+------------------------------------------------------------------+