Visual C++で__FILE_NAME__を実現したい
Q&A
Visual C++で__FILE_NAME__を実現したい。(gccとかclangのパスのない__FILE__)
プロジェクトの設定のプリプロセッサの定義で
__FILE_NAME__=""%(FileName)%(Extension)""
を設定すれば、シンボルは定義でき概ね望んだとおりになるのですが、プリコンパイル済みヘッダに__FILE_NAME__が"stdafx.cpp"として出力されてしまうため再定義警告が出てしまう。
そこでstdafx.cppの設定の指定したプリプロセッサ定義の無効化に__FILE_NAME__を指定すると、再定義警告は消えるが、/Dより/Uが優先される旨の警告が出力されてしまう。
この警告はプリプロセッサ警告なので#pragma warningで消せない。
(コンパイル警告の再定義は消せると思うが、消してはいけないレベルの警告なので・・・)
もしかすると今時のVC++には__FILE_NAME__あるかもしれませんが、使用しているのは古いものです。
前提
・__FILE_NAME__=""%(FileName)%(Extension)""を個々のソースに定義するのは手間というか漏れる可能性があるので避けたい。
・stdafx.cppのコンパイル設定はそもそも他と違っているのであるていどは変更しても良いと思う。
・でもstdafx.cppのコンパイル設定のプリプロセッサの定義を継承しないのはどうかとも思う。
・プリコンパイル済みヘッダを使用しないというのも避けたい。
何か手はないでしょうか。