main. cpp
#include <iostream>
#include "test.h"
int a = 999;
int main() {
std::cout << a << std::endl;
printa();
return 0;
}
test.h
#include <iostream>
extern const int a;
void printa(void) {
std::cout << a << std::endl;
}
При компиляции и запуске работает нормально
Но когда я изменил main. cpp на
#include <iostream>
#include "test.h"
extern int a = 999; //here is the change, I have added extern
int main() {
std::cout << a << std::endl;
printa();
return 0;
}
Работает хорошо, но появляется предупреждение.
предупреждение: инициализировано и объявлено
Что не так? Почему использование "extern int a" в глобальной области видимости не подходит?