Kodumdan tanılama iletileri yazdırmak için __FILE__
ve __LINE__
makrolarını kullanıyorum. Bu, GCC'yi make ile kullandığınızda oldukça iyi çalışır, dosya komut satırında belirttiğiniz kadar kısadır. Yakın zamanda, binalarda tam nitelikli dosya adlarını (en azından pencerelerin altında) kullanan CodeLite'ı kullanmaya başladım. Aniden teşhis teşhisim neredeyse okunamıyor.Önişlemcide yalnızca dosya adı nasıl alınır?
Sadece önişlemde dosya adının dosya bileşenini almanın bir yolu var mı? Taşınabilir olmayan bir GCC'ye özel çözümle yaşayabilirim.
Tabii bir işlevi aracılığıyla __FILE__
içeriğini geçmek ve yalnızca dosya bileşeni çıkarabilir (ı. Sade __FILE__
Diğer durumlarda son çare olacaktır), ancak string işlemleri ı değiştirmemelidir teşhis mesajları için aklındakini değildi çalışma zamanı ...
NOT: Dosya adını GNU'nun kullandığı şekilde kullanıyorum. Bir yol, dosya adlarının toplanmasıdır ve dosya adı, bir dosyanın göreli veya mutlak tanımlayıcısıdır. Bir dosya adı bir dizin bileşeni ve dosya bileşeninden oluşabilir.
Tanılama, çalışma zamanı davranışını değiştirir (aksi halde tanılama olmaz) ve fazladan bir işlev çağırıp çağırmamanız çok küçük bir fark yaratır, çünkü çıktı zaten çıktı yapmak için kitaplık işlevlerini çağırıyordur. – eudoxos
Bir tanılama iletisi yazdırmak, düzinelerce dize işlemine ek olarak, bazı iyi niyetli olmayan dosya I/O eylemlerini içerir. Bazı sebeplerden dolayı kimse bunun için endişelenmiyor. Neden sadece tanılama mesajlarını etkileyen başka bir yan-efektli fonksiyona çağrı ekleme konusunda endişeleniyorsunuz? –
İkiniz de haklısınız, ekleyerek tanılama etkisizdir. Bu şekilde uyguladım, bir işlevden geçmesine izin verdim. Daha çok var gibi bir şey merak ediyordum. Kesinlikle standart değildir, ancak bununla ilgili belgelerin bulunması mükemmel değildir. (Gcc kılavuzu bile önceden tanımlanmış her makroyu çizmez.) – rioki