long long型

longでの4,294,967,296を超える値を使用する場合に用いる型のひとつ
(正確には上記値は符号無し時なのでunsigned longの場合、符号ありの場合は2で割った値)
1999/12/1付けでISOから正式規格として認可された変数型で16,777,216テラの値を扱うことができる
printfなどのフォーマット指定に使うサフィックスでは"ll""LL"を使用する
(符号なしの場合"ull" "llu" "ULL" "LLU"を使用)
ただし"lL" "Ll"といった小文字大文字が入り混じる表記は不可
またこの拡張規格は全てのコンパイラに保証されているものではありません
使えるかどうかは一度確認した上でご使用ください(GCC3.2.3では使用可能)
また、この変数自体の取り回しは非常に厄介になるので使用は可能な限り控える方がよさそう
今回作ったプログラムではif文の判定で落ちました
long long value;
value = GetMediaSize("/dev/hda");
if( value < 0 ) return FALSE;
後ろの0を0LLとかに変えれば動くのだろうけど、プログラム全体を変更しなくてはならなくなるので
面倒だけど、一定のブロックで割るとか工夫するのがよさそう
(入力は1KB単位のみにして、プログラム内も実際の容量を1KBで割った値で受け渡し
必要な場合だけ、1KB乗算してlong longで値を扱うとか)
標準関数もまだ全然対応してないから面倒だ〜