longって略さずにlong intって書こうぜ?
だったらsignedもつけようぜ
もちろんdouble floatもだよな?
>>955 SPARC/SolarisとかLP64(longとポインタが64bit)って呼ばれる環境がある。
旧DECのAlpha/Digital UNIXのようにILP64(int、long、ポインタが64bit)もある。
Win64のポインタが64bitでint、longが32bitってのは変態すぐる。
>>955 Linuxだと long のサイズとポインタのサイズが同じという前提でプログラムが
書かれてることが結構ある(カーネルの時点ですでにそうだし)
64bit環境で普通にコンパイルすれば long が64ビットになる
x64は64bitレジスタをいじる命令が32bitレジスタをいじる命令より1バイト長い
という食わせ物だから。intまで64bitにしたくないのはわかる。
Win16のときのlong=32bitのまま引きずってるから、longを64bitに
できなかったんだろうな。
Win32ではintでいいところでlongを多用してるし。
まぁ、16bit時代から互換性を重視しながら続いているのが原因で、
しょうがないとは思う。生まれたときから32bitのOSとは事情が違うでしょ。
どうせtypedefされた型名しか使わないから、どこかの時点でlongを
使っている部分をintに変えてもよかった気はするけどね。
long long
どっかの南の島の爺さんが語る昔話の話し出しみたいな
ろぉんぐ、ろぉんぐ、あるところに・・
API自体が使うのはLONGとかDWORDとかINT_PTRとかなんだから、
別にCのlongが64bitだろうが行けなくはないはずなんだがなー
Linux(笑)
964 :
955:2008/07/02(水) 07:26:01
>>956 32ビット環境でlongが64ビットの例が欲しかったのだが・・・。JavaとかC#みたいな。
>>957 Alphaは大昔に使ったけどintは32では?
初心者ですが、32bit Windows環境だと
単なる "unsigned宣言" は "unsigned long宣言" と同義ということですか?
言語的には unsigned は unsigned int と同義。
で long がたまたま int と同じ長さだと、そうなる。
SGIのにILP64なのがあったはず。AlphaはLP64でしょ。
同義じゃないだろ。
unsigned i1;
unsigned long i2;
std::printf("%s\n", typeid(i1).name());
std::printf("%s\n", typeid(i2).name());
i1とi2は「サイズが同じ」だけで同義じゃない。
あと『単なる "unsigned宣言"』という前提から少し外れるが、ポインタの互換性はない。
typedef unsigned long t1;
typedef unsigned t2;
t2 *p = (t1 *)0; // compile error
同じ働きをすると言ってるだけで、誰も同じ型だとは言ってないよ。
整数の型を省略したらsigned, intが勝手に着くとかあったなぁ
main(c, char **s){
}
最近は省略してもintと解釈しなくなったんじゃなかったっけ
974 :
969:2008/07/03(木) 07:28:22
>>970 その「同じ働き」ってのが曖昧じゃないか。typeid比較する
コードがあったら違う挙動になるのは同じ働きとはいえないだろ。
サイズが同じだけで別の型だって念を押しておかないと
>>965は
unsignedとunsigned longの入り交じったソース量産するぞ。
975 :
デフォルトの名無しさん:2008/07/03(木) 07:46:53
posixのスレッドローカルデータって
上限値って決まってるのでしょうか
データの個数?総サイズ?
サイズなら上限は当然あるだろ
数値は実装に依存するが
>>974 int a;
int b;
a と b のアドレスを比較するコードがあったら違う挙動になるんですが、
a と b は違う働きをするんですか?
>>977 スタックサイズが64kbか128kbなので
個別スレッドで4Mのデータを扱えません
>>980 なんで全てのデータをスタックに入れようとするんだよ。
>>979 違うとえば違うような。変数と型を一緒にしてない?
>>980 回避方法はあるけど、TLSを使わない方針で設計を見直すべき。
>>984 じゃあ使わないからどうやればいいのか教えてください
スレッドごとにメモリを動的確保すればよい。メモリの解放には注意して。
>>985 使わなくてもいい方法を一度考えてから質問しようぜ
>>987 mutexしたくないので使わないと無理です
まさか、グローバル変数だけで作ってるのか?
うん
>>990 NT系列のコーディング規約でそうなってるの
どうすればいいの?
グローバル変数の使用が強制されたコーディング規則だと・・・
もちろん釣りだよな。
今人気急上昇中の組み込み系かもしれない
>>992 いやまじなんですよ本当に
コーディングルールの
項4.5.1に、共有データはグローバル変数として
定義し他者が利用しやすいように記述すること
って載ってるんですよ
本当に助けてくださいまじで困ってます。
もう吊ろうかな3日も寝てなくて頭おかしくなってきたし
>>994 TLSにデータを置いたら、他のスレッドからアクセスできなくなるから共有にならないけどいいの?
>994
共有データって書いてあるじゃん。
共有データじゃないものには適用するな。
>>994 今やってるところは個別のスレッドで
データ作って処理するところなんですよ
規約でグローバル変数は共有する場合だけ
だから使うなって言われたけどどうすればいいか
わからないし
>>997 使うなっていわれたんだから使わないでOK
グローバル変数は使わないのが正道
>>997 個別のスレッドでデータ造って処理するんだから、他のスレッドと
共有なんかしなくていいんだろ。
だから、グローバルを使わなくていいんだし、素直に
>>986 でい
いだろ。
スレッドローカルデータがどうのこうのの前に、日本語理解力と
コミュニケーション能力を何とかした方がいいと思うよ。
時間切れとなりました
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。