'dan alın Şu anki satırı, üzerinde bulunduğunuz kaynak dosyada almanın bir yolu var mı, __LINE__
C++?Geçerli kaynak dosya satırını D
5
A
cevap
9
Evet, sen __LINE__
kullanabilirsiniz. Ayrıca, __FILE__
.
olarak BCS ve Jonathan M Davis yorumlarda işaret, __LINE__
ve arkadaşları için özel bir durum vardır: Bir şablon veya işlev argümanının varsayılan değer olarak kullanıldığında, bunlar konuma çözmek Arayanın, şablon veya işlev imzası değil. Bu, arayanların bu bilgileri sağlamak zorunda kalmasından tasarruf etmek için idealdir. Mükemmel
void myAssert(T)(lazy T expression, string file = __FILE__, int line = __LINE__)
{
if (!expression)
{
// Write the caller location
writefln("Assert failure at %s:%s", file, line);
}
}
, teşekkürler. Bir std lib dosyasını değiştirdiklerinde istisna satırlarındaki tüm satır numaralarını değiştirmek zorunda olmadıklarını biliyordum :) –
FWIW: '__LINE__', C ile tam olarak aynı değil. En az bir köşe kutusu var. Farklı olduğu yerde: Bir argüman için varsayılan değer olarak kullanılırsa, çağrıyı, fonksiyonun tanımlandığı çizgide olmayan hatta çözer. – BCS
Test işlevlerini oluşturmak yerine, herhangi bir hatanın arama satırını bildirmesini istediğiniz test işlevlerini oluştururken * gerçekten * yararlıdır. –