Ваш пример кода действительно подтверждает, что у вас есть проблема с объявлением переменной.
Как намекнул @Graham, правильный способ определения глобалов:
- определить переменную в файле cpp
- объявить переменную как
extern
в заголовочном файле
1012 * Т.е. *
//ProgramName.cpp
#include "stdafx.h"
#include "Form1.h"
int g_iAllData[MAX_LEN][MAX_WIDTH];
//Form1.h
#include <iostream>
#include <string>
...
#pragma once
const int MAX_LEN = 4033;
const int MAX_WIDTH = 21;
extern int g_iAllData[MAX_LEN][MAX_WIDTH];
Таким образом, компоновщик найдет определение глобальной переменной ровно в одной единице компиляции, а во всех других единицах компиляции, которые # включают заголовок, он сможет связать объявления extern
с правильным определением переменной.
За исключением этого, могут происходить странные вещи: вы можете получать сообщения об ошибках зашифрованного компоновщика с жалобами на множественные определения переменных, или вы можете даже получить несколько разных переменных в вашем приложении вместо одной глобальной переменной - последняя объясняет, почему ваш метод не похоже, изменяет содержимое вашей переменной.