Есть несколько глобальных переменных, которые статичны в одном из файлов заголовков. Я вижу, что эти переменные используются в связанных файлах .cc. Итак, похоже, с этим нет проблем.
Мои вопросы:
В чем разница между включением глобальной переменной и статической глобальной переменной? Я знаю, что static global не имеет видимости за пределами своего файла. Но не знаю, как это будет работать, если это будет частью .h, который #included.
Я написал образец программы и попробовал то же самое. Но я получаю ошибку компиляции в тот момент, когда делаю переменную статической. Когда это просто глобально, это нормально. Итак, есть ли что-то, чего мне не хватает в обычной сборке g ++? (Обратите внимание, что вначале использовалась наша официальная кодовая база, в которой было достаточно make-файлов, файлов .h и всего остального).
Спасибо за помощь !
Вот моя примерная программа:
.h файл:
#include <iostream>
typedef unsigned int uint;
static const int appk=189;
class abc1
{
public:
abc1(int x);
virtual void printVal();
};
.cc файл:
#include "abc1.h"
extern int appk;
abc1::abc1(int x)
{
}
void abc1::printVal()
{
printf("abc1 print: %d\n", appk);
}