У меня 2 файла . Глобальные переменные, объявленные в одной, не видны во второй.
Если я положу все это в один файл, тогда он будет работать .... но у меня есть 2 файла.
Я бы хотел, чтобы вывод был "1.0"
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
/*-------------------------------------------------------*/
class MsgGateway /* redeclared here like a header file */
{
public:
MsgGateway();
~MsgGateway();
void TestFunc(void);
};
/*-------------------------------------------------------*/
struct settings_t
{
char Ver[4]="1.0";
};
/*-------------------------------------------------------*/
settings_t ESPdata; /* This is the bugger */
MsgGateway* GWClass;
/*-------------------------------------------------------*/
int main(void) /* same as main in cpp */
{
GWClass = new MsgGateway();
GWClass->TestFunc();
return(0);
}
/*-------------------------------------------------------*/
file ScopeTestMore. cpp
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
struct settings_t
{
char Ver[4]="1.0";
};
class MsgGateway /* initial declaration here in the <header> would usually be */
{
public:
MsgGateway();
~MsgGateway();
void TestFunc(void);
};
void MsgGateway::TestFunc(void)
{
printf("[%s]",ESPdata.Ver);
}
Вывод компилятора (G CC)
ScopeTestMore.cpp:23:22: error: 'ESPdata' was not declared in this scope
Serial.printf("[%s]",ESPdata.Ver);
exit status 1
'ESPdata' was not declared in this scope