ちょっと前のテキスト、いや最近でも基本は変わらないのかもしれないけれど、最初に習うテキストで、普通にint型で指定するような型の代わりに、今はsize_tを指定しないといけないことがある。
昔の教科書なら
int len = strlen(“hello”);
みたいなのか当たり前だったのに、いまは
size_t len = _tcslen(_T(“hello”));
のようなことになる。_tcslen, _TはTCHARルーチン、つまり、ASCII(あるいはシフトJIS)で文字列を処理していた時代とユニコードで処理するときの移行のために、環境によって作り分けられられるようにしたものだ。
size_tも同様で、符号なし整数なのだけれど、64bitで作る場合と32bitで作る場合に違う結果を返せるようになっている。昔intそのものにも似たようなことがあって、ある場合にはshortを、ある場合にはlongを表していた。
実際に
_stprintf(_T(“%d”), sizeof(size_t));
というようなコードを実行してみると、32bitでは4と表示されるが、64bitでは8と表示される。
これと同じようなものにtime_t, ptrdiff_tがあるそうです。