2017-06-09 13 views
6

で@__FILE__ @__LINE__このコード:ジュリアマクロ:マクロ

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

プリントfl.jl:2 | m。どうすれば印刷することができますfl.jl:4 | m

+0

こんにちは@Rolf、私はmarkdownでコードをフォーマットしました。ここで行番号が重要であることを考慮して、意味を保持するためにそれを見直してください。 – phg

+1

@phg In julia '#'は '//'ではなくコメントの開始を示します。 言語を知っている人にコードを再フォーマットすることをお勧めしますが、あなたは質問者にコメントを残していただきありがとうございます。 –

+0

@LyndonWhite私はジュリアを知っています。私は他の多くの言語でもプログラムしています;)訂正してくれてありがとう! – phg

答えて

3

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

お返事ありがとうございます。もちろん、これは解決策です。しかし、私はこれを避けたい、特に@__FILE__を追加したいからです。 –

+0

これで引数として '@__ FILE__'も追加できます。 – houtanb

4

...あなたは、これは他の面であなたの進捗状況をブロックしたくない場合は、なぜ単にマクロに行番号を渡していない、これを行うにはよりエレガントな方法があるかもしれないけど以下は、毎晩、現在のジュリアに動作します:これは、次のimplementation pull requestによって可能になった

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

。残念ながら、公式にリリースされたバージョンでは不可能です。

+0

返信いただきありがとうございます。残念ながら、私はジュリアを近く走らせることはできません。私は次のようになります:CommandLine Error:オプション 'help-list'が複数回登録されました! LLVM ERROR:登録されたCommandLineオプションの不一致。私はこれを見つけようとします。 –

+0

これは、同じプロセスで複数のLLVMのバージョンがロードされたためです。 IIRCにはJuliaベースとOpenCL.jlに未解決の問題があります(解決策があるかどうかはわかりません)。 –