之前看到一篇文章, 現在還蠻贊同的。
StackOverflow – scope of using declaration within a namespace
裡面大概在講:最好不要在 namespace 裏使用 using foo::blah
。
因為萬一哪天在自訂 namespace 外面想要 using 該 namespace ,連裡面藏起來的妖魔鬼怪也一起跑出來了。
所以我天真的想說,寫一個 bash script ,讓它幫我把 using foo::blah
自動展開成 foo::blah
,然後我就崩潰了…
展開的時候匹配做得不好,還可能會改到一些不該動的東西。
(查一下資料, sed
似乎不好做 negative lookahead ,可能要改用 perl
比較好?)
本來還想改,但小規模用還行,算了!等明年修編譯器的時候再研究吧…
改好了 :D
2016-03-25 19:00
後來成功改成使用 Perl
來處理了,第一次體驗 Perl
的 regex 強大之處。這個版本可以選擇要處理哪個 namespace ,做完以後會清除 using foo::blah;
的述句。
因為這個腳本很單純,只利用 regex 做字串替代,因此將無視所有 Scope 的作用域,替代的範圍是整個文件。