int _tmain(int argc, _TCHAR* argv[])
{
if (argc != 3) {
printf("Format is straightline.exe <EO records file> <output file>");
return 1;
}
string eoPath = string(__argv[1]);
//...other stuff ...
}
__argc == 3
の場合、__argv
はどのようにNULLポインタになりますか?Visual Studio C++ 2010 __argvはどのようにしてNULLポインタになりますか?
私のデバッガは、私は__argv[1]
を参照しようとしていた(と私は__argc == 3
ことを確認した)ときに、プログラムがクラッシュした後__argv
が0x00000000
を指していることを私に語っています。これは最小限のプログラムであり、私は何らかの処理を行う前に最初に起こっていました。
私はちょうどこれを知らないと確信していますが、__argvはどこから来ていますか? – Collin
二重アンダースコアで始まる変数の動作について*これまで保証したことはありますか? –
ねえ、それを指摘してくれてありがとう。実際、私は気づいたときにコードを熟読していました。私は以前は、これらのアンダースコアを標準的な方法として使用する必要がありました。なぜ私は正確に忘れる。不思議なWindows/Microsoft/VisualStudioの不思議と何か関係があります。とにかく、私は非アンダースコアに切り替えてあり、ありがたいことに働いています。 – pete