__wargv にアクセスするとクラッシュする
どこで聞いたのか忘れたが Visual C++ には __argc, __argv, __wargv みたいなグローバル変数があって、プログラムの引数にアクセスできる。こりゃ便利だなと思って __wargv 使ってみると APPCRASH する。
そもそもこれらの変数の管轄は CRT なのかそれとも Windows SDK なのかいまいちよくわからんが、少し調べてみると
- エントリポイントが main か WinMain の時は __argv
- エントリポイントが wmain か wWinMain の時は __wargv
を使うということらしい。
本当は __targv を使うのが正しいやり方っぽいが、自分はマクロで Unicode 版と ANSI 版を書き分けるのが好きではないので気付かなかった。