タグ

2016年3月28日のブックマーク (2件)

  • C#で__LINE__や__FILE__プリプロセッサマクロを使いたい - kkamegawaの購入記録

    ANSI Cではプリプロセッサマクロが用意されています。コンパイルの前処理として実行され、定義済みのトークンをあらかじめ決められた値で置き換えてからコンパイラに渡すという物です。Javaでもそうですが、最近の言語ではプリプロセッサマクロのように、副作用の大きな物は排除しているように見えます。まぁマクロの廃止は誤りの少ないプログラムを書くためには正しいと思うのですが、それでもやはり使いたい物がいくつかあります。 その筆頭が__FILE__と__LINE__。これらはコンパイルの前処理で、「ファイルのフルパス」と「ファイルの行番号」として置き換えられます。特殊定数(INT_MAXとか)のようにプログラムの動作としては役に立ちませんが、タグジャンプ書式のログを吐き出すときは結構便利なのです。私はこんな感じで使っています。 wsprintf(szOutput, "%s(%d) lRet:%ld",

    C#で__LINE__や__FILE__プリプロセッサマクロを使いたい - kkamegawaの購入記録
    babydaemons
    babydaemons 2016/03/28
    古い.NET Frameworkだと、やはりStackFrameクラスを使うみたい。そして、リリースビルドだと「デバッグ情報の生成:True」が必須と。
  • VB/C#でトレースログを出力する方法 | Moonmile Solutions Blog

    C/C++ で言うところの、__FILE__ や __LINE__ を拾ってログ出力したい、という場合 次のような関数を作っておきます。 Public Class DebugTrace Public Shared Sub Trace() Dim sf = New StackFrame(1, True) Dim methodName As String = sf.GetMethod().ToString() Dim fileName As String = sf.GetFileName() Dim lineNumber As Integer = sf.GetFileLineNumber() MessageBox.Show(String.Format( _ "場所 {0} 場所 {1}:行 {2}", methodName, fileName, lineNumber)) End Sub End

    babydaemons
    babydaemons 2016/03/28
    StackFrameクラスで1つ前を辿れば、呼び元がたどれると。