A ve B gibi iki kitaplığa bağlamam gerekir. Dosyalardan bazıları her iki kitaplıkta da ortaktır. Yani, kitaplık A'daki işlevleri bir ad alanı içinde bildiriyorum, abc.C++: Extern C Bir Ad Alanı İçindeki İşlevler
[ in A]
namespace abc {
extern "C" void func();
}
[in B]
extern "C" void func();
projesini inşa ederken, derleyici işlevi değer işlev birden tanımlarını söyleyerek bağlama hataları atar: Yani, A ve B, bir fonksiyon fonk aşağıda benziyor. A adındaki fonksiyonun isminin içinde yer alması ya da extern "C" fonksiyonları ile ilgili bir problem var mı? Varsa, ikisini de nasıl ayırt edebilirim?
Bununla birlikte, ad önbelleği C önişlemcisi için kapatılamayabilir. Visual C++ 2010'da "__FUNCTION__" makrosunun değeri, "extern" C altında bile tam olarak nitelenmiş tanımlayıcıdır. "Adınız". Bu, '__FUNCTION__',' __PRETTY_FUNCTION__' veya '__func__' gibi önceden tanımlanmış makroları kullanan ad alanlarındaki makroları çağırırken ayaklarınızın üzerine düşecektir. Benim durumumda (bir DLL'den C taslakları ihraç) o yaptı ;-) –