Bu C++ dosya ... Bu simgelerin bulunduğu bir nesne dosyasınaAd alanı yönergesini kullanırken neden bir ad alanı eklenmiş?
namespace foo {
class C {
void m();
};
void f();
}
using namespace foo;
void C::m() {}
void f() {}
..Compiles:
$ g++ foo.cpp -c
$ nm foo.o -C
000000000000000a T f()
0000000000000000 T foo::C::m()
Neden ad f()
de başa ama olsun C::m()?
geliyor?
(Ben using namespace foo
yerine namespace foo {...}
kullanın, sonra her iki adın da foo
önplanaları var).
Yanıtın size gösterdiği gibi, soru yazarken sonuçlara atlamak için kızarma olmayın. Şaşırtıcı bir şey varsa, en iyi görünen çelişkiye nasıl yaklaştığınıza ve "Bağlantı farklı mı?" Bunun varlığını varsaymaktan ziyade (aslında bağlantınızın sizin durumunuzla ilgisi yoktur, tüm ilgili bağlantılar dışsaldır). –
@KerrekSB Nedeni hakkında varsayımlarda bulunmamak için başlığı güncelledim. (C++ ile uğraşırken çoğu zaman bağlantı, kapsam ve depolama ayırmalarını karıştırıyorum). –
Çok beğeni! –