2010-12-15 21 views

cevap

9

Evet, sen __LINE__ kullanabilirsiniz. Ayrıca, __FILE__.

See Keywords section

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); 
    } 
} 
+0

, 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 :) –

+6

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

+5

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. –

İlgili konular