2017-06-09 26 views
6
makro

Bu kod içinde:Julia makrolar: @__FILE__ @__LINE__

macro FL(message) 
    return @sprintf("%s:%d | %s", @__FILE__, @__LINE__, message) # line 2 
end 
println(@FL("m")) # line 4 

baskılar fl.jl:2 | m. fl.jl:4 | m'u nasıl yazdırabilirim? Bu diğer cephelerde ilerlemeyi engellemek istemiyorsanız

+0

Merhaba @Rolf, Markdown'da kod biçimlendirdim. Hat numaralarının burada önemli olması koşuluyla, anlamın korunmasını sağlamak için lütfen gözden geçirin. – phg

+1

@phg Julia'da # işareti, yorum yapmaya başlar, değil '//'. Dilini bilen kişilere yeniden kodlama kodu bırakmanızı öneriyorum - takdir etmeme rağmen, asker hakkında bir yorumda bulunmamanızı rica ediyorum. –

+0

@LyndonWhite Julia'yı tanıyorum. Ben sadece başka birçok dilde program yapıyorum;) Düzeltme için teşekkürler! – phg

cevap

3

bunu yapmak için daha şık yolları olabilir rağmen, neden sadece ... makro için satır numarasını geçemiyor

macro FL(message, line) 
    return @sprintf("%s:%d | %s", @__FILE__, line, message) 
end 
println(@FL("m", @__LINE__)) 
+0

Cevabınız için teşekkür ederiz. Tabii ki bu bir çözüm. Ama özellikle bundan kaçınmak istiyorum çünkü @__FILE__ eklemek istiyorum. –

+0

O zaman argüman olarak '@__ FILE__' da ekleyebilirsiniz. – houtanb

4

aşağıdaki gece cari Julia çalışacak: Bu aşağıdaki implementation pull request ile mümkün olmuştur

macro FL(message) 
    return :(@sprintf("%s:%d | %s", $(string(__source__.file)), $(__source__.line), $(esc(message)))) # line 2 
end 
println(@FL("m")) # line 4 

. Maalesef resmi olarak yayınlanan herhangi bir versiyonda mümkün değil.

+0

Cevabınız için teşekkür ederiz. Maalesef Julia’nın çok çalışmasına izin veremem. Anladım: CommandLine Hatası: Seçenek 'yardım listesi' bir kereden fazla kayıtlı! LLVM HATA: kayıtlı CommandLine seçeneklerinde tutarsızlık. Bunu anlamaya çalışacağım. –

+0

Bu, aynı işlemde yüklü birden çok LLVM sürümü nedeniyle oluşur. IIRC'de Julia üssünde ve OpenCL.jl'de açık konular vardır (herhangi bir çözünürlükten emin değil). –