mój prosty kod wygląda następująco:Zewnętrzne funkcja klasy
a.cpp:
#include <iostream>
namespace asd
{
class B
{
public:
void ss()
{
extern int i;
std::cout << i;
}
};
}
int main()
{
asd::B e;
e.ss();
}
b.cpp:
int i = 4;
Czy to dobry kod z norma czy nie? Visual Studio kompiluje bez błędów, ale kompilator C++ Intel mówi: (? I @ asd @@ 3ha) nierozwiązane zewnętrznych symbolu "int asd :: I"
uzyskać więcej zabawy, jeśli zmienię b.cpp do:
namespace asd
{
int i = 4;
}
Następnie Visual Studio C++ 2013 mówi: nierozwiązane zewnętrznych symbolu "int i" (? ja @@ 3HA)
Ale Intel C++ kompilator mówi ok :) Jaka jest właściwa wersja tego kodu Jeśli chcę mieć tego extern w funkcji członka klasy (czy to jest legalne?)?
Edit: najlepsze wyniki, gdy zmieniamy b.cpp do:
Visual C++ drukuje 5 Intel kompilatora 4 :)
Co to jest ten tajemniczy "inny kompilator"? –
Porównałem wyniki z kompilatorem intel. Gcc nie testowałem. – AdamF
Proszę pokazać swoje B.cpp, to kompiluje się z gcc dla mnie. – quantdev