Hatena::ブログ(Diary)

shouhの日記

2013-11-05

__FILE__ が相対パスになるのを何とかしたい


__FILE__ が相対パスとして展開されることがある。たとえばこんな感じ。

../../../../src/hoge/hogemain.cpp

長ったらしくて煩わしいので何とかしたい。理想は hogemain.cpp ようにファイル名のみ。

調べてみるとどうもプリプロセッサとしては用意されてないようだ。MSDNPredefined Macrosを見てもそれっぽいものは見当たらない。

となれば自前で相対パスを省くしかない。Stackoverflow に素敵な回答があった。

#include <string.h>

#define FILE (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)

via c++ - __FILE__ macro shows full path - Stack Overflow

strrchr で右端の '/' を見つけて、その一文字先から全部を取り出している。これくらいの処理なら性能面でもあまり問題にはならないだろうから、ログ出力なんかにも十分使えそうだ。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/shouh/20131105/1383653323