3 :
デフォルトの名無しさん:04/12/15 07:09:02
(
____)__
,. ´ ` ` 、
./ _ _ \
/ _  ̄ _ ヽ
/イィィ,,.,.,.,.,.,  ̄ ̄ !
f/ノノノノノノノ ヘ.__ j jノ__ノ
|/////// _ (__ ゚_>` __( ゚_イ
.!|.|i/_^ヽ|_'___r⌒ y' ヽ^)|
!|| fニ> :::::: `ー'゙ (_`___)ノ
ヽ.ニ` : /_ノ/川! / やりおった・・・
__ノ 、 / ヾ---'´ ノ
__ノ \l ` ____,/
\ ノ リ.|`ー--
\ .//
糞コンパイラ
-O1は特に酷い
手書きアセンブラのほうがマシっす
>>4 Cってのは、速度が気になるコードを書きたいのならコンパイラがどんなコードを出すのかを
理解しながら書かなければならない言語だが?
その限りにおいて、GCCはそれ程ひどいコードを出してこないし、手書きアセンブリよりは
はるかに楽だが。
乙
まだ4.0試してネーヤ
4.0.0の-O2は凄いな。有効オプションの数が多い。
8 :
デフォルトの名無しさん:04/12/18 21:20:47
でも、gcc 4.0のはき出すコード、gcc 3.4.3より2割ぐらい遅いな。-O2でも-O3でもおなじ。僕だけ?
9 :
デフォルトの名無しさん:04/12/18 21:29:58
現在ベストオブgcc versionは、3.3らしい。
3.3.3最強
[gccトリビア]
gcc4.0でブランチしたのは、
3.4に存在したバグが相当あったために4.0としてブランチした。
gccにgpcが統合されるの?
今さらpascalなんてイラネ
ここだけの話、ディストロやOSにもよるが
gcc3.4系は早々とgcc4.0系に切替えていくんじゃないかという噂がある。
試しにgcc4.0でFirefoxビルドしてみたら体感速度上がった。プラグイン全て使えなくなったけどなorz
gcc4.0って3.4からまたABI変わっちゃったの?
19 :
デフォルトの名無しさん:04/12/20 19:48:12
あび
あのさ、amd64環境でさgcc4.0にしてコンパイルしたらさ
error: cast from ‘void *’ to ‘int’ loses precision
っていうエラーが出まくるようになった。
このエラーは3.3系で出なかったけど型の制限がより厳しくなったってこと?
22 :
デフォルトの名無しさん:04/12/20 23:18:12
>>20 void * が 64bit で、int が 32bit だからでしょ・・・。
ポインタとintが同サイズと仮定したコードキター!!!
>>22 実はそのアプリってFirefox1.0です。orz
>>23 あなたのそばにも依存したアプリが....。
一般にAlpha/AXP がまだ現役だったころ開発・メンテされてたコードだとLP64 に結構対応してるのが多いし、
その後IA32野郎が壊したところもすぐ直るものなんだけど、Firefoxのコードは新し目のコード多いのかなぁ・・・
げっ!パフォーマンスチェックしたら、
gcc 4.0がgcc 3.3.3に負けた。orz
っていうか、まだリリースされてないか4.0って(笑
改善の余地有りってことかな。
gcc 3.3.3が最強ってことでFA?
gcc 3.3最強
Firefoxのソースはgccっていうか、g++なんだけど。
Quick hackしようとおもって途中までやってたんだが次から次へと依存したコードが...。
⊂⌒~⊃。Д。)⊃ 依存したコードありすぎて終わらね~~よ!!やめたー!
binutils 2.15.94.0.2 出た
gcc4.0は、まだバギーみたいだね。
単純にvoid *をintに代入する、なんて糞コードが
修正されずに残ってるものなのかな。
もしかしたらptrdiff_t相当の、ポインタの差ををintに代入してるのかも
と思ったけど、だったら出るエラーメッセージが違うだろうし。
34 :
デフォルトの名無しさん:04/12/22 22:01:46
gfortran4.0でfortran90用に書かれたソースが無条件でとおるようになった。
姫野ベンチを試したら、5%くらい遅いね。(Opteron1.6GHzで498Mflops(gfortran4.0)と526Mflops(g77))
またSECNDS()がなくなった。
でもさ、mozillaプロジェクトのコーディング規約って、
移植性最優先なんじゃなかったかなあ。
firefoxって別なのか?
>>33 AMD64上でgcc4.0を使用して、Firefoxをコンパイルすればわかる。
gccは宇宙史上最大のツール
4.0上で
>>20のエラーは"Mudflap"て機能が働いてるって事?
> また「完全な内部形式のTree Dumpを取りたい」という意見については、
> 小島氏は「実はこれはRMSの方針で「完全なダンプは出さないようにすること」
> ということになっている」との事実を明らかにした。これは「完全なダンプを
> 出力可能にすると、ProprietaryなBackend Pathを作られてしまう可能性がある」
> という理由からだと言うのだが、一方で開発者にとって完全なダンプが取れる
> ことが非常に魅力的であるという事情もあることから、事前に何らかの文書等を
> 交わしたユーザに限り完全なダンプの出力機能を利用可能にするといったことが
> できないか現在検討が行われている、と同氏は語った。
自分で手を入れて吐かせりゃいいんだけどな。
以前gcc依存バリバリのコードを処理する必要があるときにそうした。
>>42 オープンソースなのでやるだけ無駄だということですね。確かに。
吐く所だけGPLにすりゃいいだけだもんな。
敵に塩を送らないってだけの話だな。
46 :
デフォルトの名無しさん:04/12/24 20:46:00
age
>>37 casts-as-lvalue って何で騒がれてるの?
Linux界でだけ?
大体cast-as-lvalueがどういう意味なのかも知らん。
cast as lvalue は大昔からのGNU拡張でわ?
たいていは回りくどい書き方に修正すればANSI互換に書き直せるハズ。
>>47 普通の C / C++ で *(int*)&d = 1; とか書くところを、gcc では今まで (int) d = 1; と書けてた(んだと思う)。
簡易unionみたいなもの。さほど意味の無い変な拡張だけど、使ってる人もいたんだね・・・
gccを導入したいんですがどこからどうしたらいいのかわからないので
詳しく説明してあるページとかあったら教えてください、日本語で
ホスト(コンパイラを走らせる環境)は何だよ?
windowsなんですがうごきますか?
>>53 cygwin mingw SFU(interix) coLinux どれか選べ
cygwinなりmingwなりで検索しる
ラジャ
cygwinについてるgcc用のSTLのrandom_shuffleって壊れてませんか?
全然シャッフルしてくれないんですけど?(最後の要素が先頭に移動するだけ)
同じコードをVC++7.1で動かしたらちゃんとシャッフルしてくれました。
60 :
デフォルトの名無しさん:04/12/30 14:34:19
質問させてください。
Adaを含めてMinGW-BSDクロスコンパイラを作りたい場合、どうconfigureすればいいですか?
61 :
デフォルトの名無しさん:04/12/30 22:15:55
>>59 それでうまくいきました。どうもありがとう。
しかし…なぜデフォルトでちゃんとシャッフルしてくれないのだろうか…。
(clでは第3引数なくてもちゃんとシャッフルしてくれました。)
cygwin の lrand48 が悪いらしい。
#include <stdio.h>
int main()
{
printf("abc");
}
という内容のファイルをコンパイルするとヘッダファイルがないといわれるんだけど何故?
64 :
デフォルトの名無しさん:05/01/02 16:28:41
65 :
デフォルトの名無しさん:05/01/02 16:34:07
includeパス間違い。ユーザ マニュアル見て設定しる
67 :
デフォルトの名無しさん:05/01/04 17:19:30
>>39 > 4.0上で
>>20のエラーは"Mudflap"て機能が働いてるって事?
違うよ
-fstrict-aliasingと-funit-at-a-timeはメリットよりデメリットのほうが多い気がする。
69 :
デフォルトの名無しさん:05/01/07 00:41:43
あのね、linuxとかgccはビルド環境もターゲット環境も多岐にわたるから、
中核部分の開発が激しく盛り上がってるときはどうしてももっとも主流の環境が
中心になるのだよ。LinuxだったらターゲットCPUはx86系で開発環境はLinux上、つまり
セルフコンパイル環境がね。といっても他の環境でも試さなければ問題が発見できないから、
それはそれで行なうわけ。
まあ1つのターゲットと1つの環境でしか開発したことのない人間は黙ってロッテことですな(笑
たとえばautoconfとか使ったことある?ターゲット環境やビルド環境に合わせてmakefileを自動生成数ツール。
-- test.c --
#include <stdio.h>
int main(void)
{
printf("abc");
return 0;
}
----------
test.cをgccで、
%gcc -o test test.c ........(1) と実行しますと、testの実行ファイルが作成されますよね、
ここで、(1)のtestが動作していることを確認しています。
そして、今度は、
%gcc -c test.c でtest.oオブジクトファイル生成で止めて、リンカ(ld)で実行ファイルの生成したいのですが、(gccから、ldは呼び出さない。)
必要なライブラリが分かりません、(1)に-vオプションで表示されたライブラリを読み込ませたのですが、
関数exitが見つかりませんでした。
test.oをldで、リンクするとき最小限に必要なライブラリを教えていただけませんでしょうか
また、startupオブジェクトはどのライブラリなのか教えていただけませんでしょうか。
ちなみに環境はSunOS 5.8です。今手元に実行環境がなくあいまいな質問になってしまいましたが、
よろしくお願いいたします。
gcc -v test.cしてみる
gcc -o test test.o ... でリンクすればよかったのにな。
なんだよ、最後は「実行しても何も表示されません」かと思ったのに。
全部読んで損した。
%ld でリインクできた。
リインク!!
77 :
デフォルトの名無しさん:05/01/09 08:47:02
キムチチゲ
Did you receive the electric wave?
79 :
デフォルトの名無しさん:05/01/21 20:46:45
yeno.
最適化強くなってるから下手にフラグ付けると変なバイナリ出来そうだな…。
rmsの波だの結晶、そのひとつがgcc。
波だ→涙
codesourceryって何者でつか?
この前初めてインテルC++使ってみたけどGCC3.3.4に比較して45%以上の
パフォーマンス向上が確認できた。
85 :
デフォルトの名無しさん:05/01/30 10:42:50
そりゃそうだろ
>>84 それが売りだから。>IA32orIA64パフォーマンス
逆にIAマシンでgccとパフォーマンス変わらなければ存在意義ないし。
# define __acquire(x) __context__(1)
っていうコードで悩んでるんだけどな、
__context__(1)ってのはどういう意味なんだろう?
88 :
デフォルトの名無しさん:05/01/30 22:07:00
Pentium3だとほんの少し速くなる程度。Pentium4なら劇的に速くなるのかな。
GCCがPen4に対応する気がないから。
gccってのはなにもIAマシンだけに固執してるわけではない。(IAユーザは多いが)
しかし、g++の最適化がそれほど研かれてない気もする。
それもパフォーマンスが悪い原因の一つかな。
gccはクロス・コンパイル機能はダントツかもしれんな。
CPUをgccに最適化するとよいと行ってみるテスト
>>93 RISCにすればそこそこ速そう。x86が悪いんだ!
95 :
デフォルトの名無しさん:05/02/01 00:41:19
捕手
gccは多態性がある。
大勢がx86-64にチェンジすればまた変わるんだろうな
レジスタ数増えれば最適化のチャンスも増えるし
autovectorizationをgcc3にバックポートすればもっと変わる
素直に4使えば?
101 :
デフォルトの名無しさん:05/02/01 10:16:17
102 :
デフォルトの名無しさん:05/02/01 23:42:09
gcc 3.4になってから
if (functionName) {
...
}
みたいに関数名をboolコンテキスト持ってくると
the address of `functionName', will always evaluate as `true'
と警告が出るようになったんですが、これを抑制するオプ
ションが無くて参ってます。何かこの警告を消す良い方法は
無いでしょうか? ちなみにマクロを展開したあとにこういう
文になります。
>>102 試してないけど、 functionName != 0 にしたらどうだろう。
でもこれは、マクロが問題なんじゃないかな?
104 :
デフォルトの名無しさん:05/02/03 22:17:50
>>103 ありがとうございます。それでうまくいきました。
でもこういうマクロ問題なのかなあ・・・
普通の関数は0番地に配置されることは絶対無い
(アーキテクチャにもよるがこれはハードウェアの仕様)
ので常にtrueになるよという警告だろ。
x86の場合、確か0番地はベクタテーブルだから必ず
割り込みルーチンのポインタが書かれていると思ったけど。
>>106 君はいつまでリアルモードで生活してるのかね?
関数へのポインタが整数の定数0と比較して等しくならないのはCの仕様。
109 :
デフォルトの名無しさん:05/02/04 00:37:55
>>105 字面の意味じゃなくて何故この警告が抑制できないかって
ことですよね。全然わかりません。
-Wno-xxx で警告が消せないってことはプログラマに絶対
注意喚起する必要があるって判断なんだろうけど、正直
unused variable と同レベルの警告とかしか思えません。
正直unused variableと同レベルの
どうでもいい話題 > 何故この警告が抑制できないかって
現在、gcc.gnu.orgのサーバが障害発生中。
このサーバはsources.redhat.comも運用している。
ファイルシステムに問題があった模様で、現在復旧中。
>>111 アンチGNU野郎に攻撃されたのかと思ったぞ。
それいいね
>>102 そんな謎のコードを生成するマクロ使うな
大雑把にはこういう感じなんすけど
書き方が良くないんでしょうか・・・
#define (a,b,c,func)
do {
foo(a,b);
bar(b,c);
if (func) {
func();
}
} while(0)
キモイ
do とか使う人嫌いです
つうかこれってdo~while使う必要あるのか?
> if (func) {
これなんの意味があるの?
>>120 二つ以上の文をマクロにするとき do {} while(0) で囲うのが
普通と思っていたんですが、実は普通じゃなかったんでしょうか・・・
>>121 func に相当する処理が不要になるケースがあるので、
その場合 NULL を与えればそこを飛ばせるように、という
意図なんですが・・・
>>122 do..whileはbreakで抜けたい時だけですよ…
>>122 セミコロンを要求する意図での使用は普通。
貴方は正しい。
>>123 funcあり版となし版を用意する方が医院で内科医?
gdcって統合されないのかな?
これ以上肥大化させないでくれ……
131 :
デフォルトの名無しさん:05/02/06 21:30:40
gcc.gnu.org 復活age
132 :
デフォルトの名無しさん:05/02/07 13:46:29
MSも酷いことするよな。
いくらGCCが憎いからって・・・
gccは世界遺産に認定
gccのバックエンドの書き方解説してるページはどこですか?
バックエンドは知らん。
フロントエンドなら GCC Frontend HOWTO があるが。
gcc4.0はいつリリースでつか?
AthlonXPのCPU使っていてフラグに-fprefetch-loop-arrays付けるとQuantiSpeedを使ってくれるよう最適化するのかな。
>>140 > Therefore, my current expectation for a GCC 4.0 release date is April 15th.
4/15に4.0リリース見込みか・・・まぁ伸びるだろうけど。
4.0の最適化がよくなってきたね。
20050222でやるとgcc3とほとんど同じ速さになった。(FC3 )
4.1のx86_64がコンパイルできない。
crti.o がないといっておこられる。
x86_64用のcrti.asmがないんだけど。
ちょっとお聞きしたいんですが、以下のようなファイル
---ファイルここから---
--func.c--
#include <library1.h>
#ifdef BAR
#define FOO
#include <library2.h>
#endif
(以下略)
--library1.h
(略)
#include <library2.h>
(以下略)
--library2.h--
(略)
typedef _hoge hoge;
#ifdef FOO
struct _hoge {(構造体の中身:中略)
};
#endif
(以下略)
---ファイルここまで---
で、gcc -I(ライブラリヘッダファイルの場所) -DBAR -c fonc.c でコンパイルするようなfunc.cを
書くときに、func.cの中で構造体hogeは使用できるのがgccの仕様として正しいのでしょうか
それとも、できないのが正しいのでしょうか。
#実はgtk+-2.6.2 + ruby-gdkpixbuf2-0.11.0で上のようなところで
#hogeに対応する構造体が完全に定義されないためにエラーが出て困ってます。
#(cppを通してみたらstruct _hoge { }; の部分が出てこなかった。)
#gccはgentoo linuxの3.4.3.20050110というバージョンです。
>>145 gcc かどうかって関係ないんでは。本当にこの通りだとすると、cpp の
出力に struct _hoge {...}; が含まれるでしょ?
>>145 library2.hにインクルードガードが掛かってるとか?
>>145,146
レスどうもです。いやぁ、マヌケかましてました。
>>146 >library2.hにインクルードガードが掛かってるとか?
まさにそれでした。
実際には
library1.h→gdk-pixbuf.h、library2.h→gdk-pixbuf-io.h、func.c→rbgdk-pixbuf-format.c
BAR→HAVE_GDK_PIXBUF_GDK_PIXBUF_IO_H、FOO→GDK_PIXBUF_ENABLE_BACKEND
hoge→GdkPixbufFormat
なのですが、gdk-pixbuf-io.hにしっかりインクルードガードがかかってました。
で、GDK_PIXBUF_ENALBE_BACKENDをdefineした後のgdk-pixbuf-io.hのインクルードは
ガードされてるので、_GdkPixbufFormatの定義ができないみたいです。
#gtk+-2.4から2.6バージョンが上がったときにgdk-pixbuf.h、gdk-pixbuf-io.h
#周りが変わって、gdk-pixbuf.hがgdk-pixbuf-io.hをインクルードするようになったっぽい。
ていうことは、gtk+-2.6じゃruby-gdkpixbuf2はコンパイルできないと言うことか...
#早く対応版をリリースして欲しいな...
そういうコード書く奴が悪いと思うが。
>>149 この場合の悪いやつとは誰?
1.Gtk+の開発者
2.ruby-gnome2の開発者
Ruby!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!
154 :
デフォルトの名無しさん:05/03/05 06:22:40
gccってなんと読むのですか?
155 :
デフォルトの名無しさん:05/03/05 12:31:26
>>154 みかか
gcc4の最適化が大分賢くなってきたね。gcc3.4より早くなるコードも出てきたよ。
バグが怖くて使えないけどな~
>>156 ま、僕も試してるだけだけど、
そうはいっても、どのバージョンにも少しずつ問題あるしなー。
>>157 歳がばれますね。(お互いに)
JISかな配列と年齢に何の因果関係が?
ぐっしっし
161 :
デフォルトの名無しさん:05/03/05 16:25:22
Mudflapって、IBMのプロポリスみたいに、運用時のセキュリティ向上に使えるものなんでしょうか?
それとも、GCC BoundChecking patchみたいにデベロッパのデバッグ向け?
>>161 遅くなるので、デバッグ以外の用途は厳しいような気がしますな。
そりゃあんただけですな(苦笑
164 :
デフォルトの名無しさん:05/03/06 02:15:30
>>162 MLを見るに、現状だとboundscheckingパッチ並み(かそれ以上)に遅いようですけど、
4.0の正式リリース時までに改善されたりする予定はないんでしょうか?
HeapOverrun対応ってことで、IBMのよりヨサゲなんですけども。。
>>158 因みに、私は22ですよ
(みかかは知ってるけど、確かPC雑誌で読んだ知識で、普通に使われてた時代はネットしてなかった)
確かに友達はみんな知らんなぁ
>>165 がびーん、おじさんは俺だけか・・・
>>164 多少早くなるかもしれんけど、劇的に変わることはないんじゃないかな。
もせ
169 :
デフォルトの名無しさん:05/03/13 19:55:42
171 :
デフォルトの名無しさん:05/03/13 22:21:41
>>170 あ、元スレのほうにレスがついてました。
ありがとうございました。
おそらく
>>169 の処理系では, 先に CHAR_MAX=127 と定義されて
c <= 127 は
>>169 の処理系では c <= CHAR_MAX と等価なので,
常に真になると警告してるような気がする。
CHAR_MAX は処理系定義なので CHAR_MAX が 128 以上に定義されてる
場合は警告は出ない鴨。
>>172 元スレで結論が出てる話にいまさら「気がする」と書き込んでどうする。
ついでに言っておくが、 CHAR_MAX=255,CHAR_MIN=0 でも警告されるだろうな。
>>173 CHAR_MAX=255の場合でも警告されるの?詳細希望。
あ,CHAR_MIN=0の場合か。失敬。
何故ここでC言語の文法の話なのだ?
警告の話だろ
>>177 出力された警告の通りでしょ。疑問なんかなんにもないじゃん。
で?
179 :
デフォルトの名無しさん:05/03/15 01:18:44
gccのライブラリの話ってここでいいの?
「gccのライブラリ」じゃぁ誰も分からん。
181 :
デフォルトの名無しさん:05/03/15 01:25:51
わかんないなら答えなきゃいいのに。
まあ馬鹿同士仲良くやれよ(▽
馬鹿が集まってきたなw
俺は、
>>172の指摘したgccの警告は(・∀・)イイ!!と感じる。
ウザイと感じるのはVCでいっぱいいっぱいの初心者。
警告に関して言えば、gccの優れた点の一つだと思う。
printf系の書式指定する出力関数の書式チェックをある程度やってくれるのも(・∀・)イイ!!
185 :
デフォルトの名無しさん:05/03/15 05:32:12
gccってなんて読むの?ぐっくっく?
devel で rms が暴れててびびった。
191 :
デフォルトの名無しさん:05/03/16 10:21:46
gcc3.3.3で安全かつ高速な最適化オプションってどうつければいいんでしょう。
-O3 -mcpu=pentium3 -march=pentium3 -msse -mfpmath=sse -fomit-frame-pointer -fmove-all-movables -ftracer -fforce-addr -freduce-all-givs -fno-branch-count-reg -foptimize-register-move -fsched-spec-load
Pentium3でこんな感じで最適化オプションを設定してます。
>>191 最適化オプションが「安全」って、どういうことよ?
コケたり妙な挙動しないかとか。
単に何もわかってない最適化厨と思われ。
最適化で動作がおかしくなるプログラムは、そのプログラムのソースが
元からおかしくて、最適化で問題が露呈するケースが多いように思う。
198 :
デフォルトの名無しさん:05/03/16 16:23:36
4.0のスケジュールはどこで確認できるの?
生涯現役。あっちもバリバリです。
>>196 確かに。
Strict aliasingのルールなんて、知ってる奴のほうが少ない。
crossjumping!
204 :
デフォルトの名無しさん:05/03/18 00:53:37
gccでLD_LIBRARY_PATHを設定しなくても、実行時に/usr/lib以外の
ライブラリサーチバスを探してくれるオプションは何でしたっけ?
205 :
デフォルトの名無しさん:05/03/18 01:02:07
-L/path/to/lib
206 :
205:05/03/18 01:02:39
実行時か。
>>204 よくわからんが、動的ライブラリにしたいのではなくて?
209 :
デフォルトの名無しさん:05/03/18 12:12:00
グッシッシ
>>189 なんかその読みは、gotoを多用しそうだなw
212 :
デフォルトの名無しさん:2005/03/26(土) 04:58:30
gccで指定できるpragmaの一覧ってどこにあるのでしょうか
info
214 :
デフォルトの名無しさん:2005/03/29(火) 18:11:52
OpenMPとpthreadの違いを教えてください
216 :
デフォルトの名無しさん:2005/03/30(水) 01:00:12
実行の割合を逐次表示させるコードを書いているんだけど、
Windowsコマンドラインでは滑らかに表示されるものが、
Linuxでは処理が完全に終わるまで表示されない。
例えば
for(i=0;i<100;i++) printf("\b%f%完了", hoge(i));
だれか解決方法わかりまつか?
setvbuf
218 :
デフォルトの名無しさん:2005/03/30(水) 01:51:10
>>217 そういう問題じゃないです。
Linuxは処理が遅いからです。
219 :
デフォルトの名無しさん:2005/03/30(水) 01:54:44
for(i=0;i<100;i++) printf("\b%f%完了", hoge(i)), fflush(stdout);
setvbufでstdoutを_IONBFにしても同じでしょ。
まあいいけど。
俺の、非常に狭く少ない過去の経験上、
Unix系(というかglibcだな)は、printf系は_IOLBF相当になっているみたい。
で、Win系(VC,BCC)では、標準出力がリダイレクトされてない場合は_IONBF
リダイレクトされている場合は_IOFBFのような気がした。
Cのことなら俺に聞けスレでスルーされてしまったので、
こちらで聞きたいのですが、
gccでハイパースレッディングをフルに使う処理は、
どのように書けばいいのか、URLか本を教えてください
カーネルがHT有り無しで若干異なるようなので、
そういう書き方があるような感じがします。
並列プログラミング?
>>222 コンパイラは無関係。ふつうにpthreadなりCreateThread()なりでマル
チスレッドのプログラムを書けばいいだけ。OSがHT対応してなければ、
もちろんHTは使えない。
223 :
デフォルトの名無しさん:2005/03/30(水) 12:11:46
posixスレッドプログラミング ascii ISBN4-7561-2020-2
pthreadsプログラミング OREILY ISBN4-900900-66-4
>>216 open()で/dev/stdoutとか開いてwriteで書けばよい。
ゆく~り確実に文字がでてくるよ。
>>216 >>224で既出だけど、printfはバッファリングされるから
デバッグ出力なんかは fpritf(stdout, ... ) が常套手段。
(゚Д゚)ハァ?
>>216 今更だが、スレ違い。
>>225 m9(^Д^)プギャー
特別に stderr はバッファリングされないので、それと勘違いしてないかい?
M7(9) add9 m7(9)
>>226 fprintf も stdout に関してはバッファリングする処理系が多いと思うが。
stderr ならともかく。
233 :
デフォルトの名無しさん:2005/03/31(木) 10:58:12
opteron+Linux(suse9.1)+gccの環境で、インラインアセンブラを使いたいのですが、何が必要なのでしょうか?
>>233 gccが入っていて普通に使えるようなら、他はとくに必要なものはない。
opteron+Linux(suse9.1)+gccの環境で、淫乱ブラを使いたいのですが、何が必要なのでしょうか?
>>235 胸があって普通に使えるようなら、他はとくに必要なものはない。
237 :
226:2005/03/31(木) 18:27:10
素で間違えとったよ。
おかしすぎる..。笑いが止まらない。
今度の仕事の環境がlinuxらしいので、自宅のLinux環境にGCCを入れたいんですが、
GCCのインストール方法を簡単に説明したサイトないでしょうか?
そういう質問をする奴の「Linux環境」には
最初から入っている。
>>240 環境設定は、Linux板の該当ディストリスレで。
243 :
デフォルトの名無しさん:int 2ch =05/04/02(土) 05:29:28
gprof でどんなルーチンでどれくらい時間かかってるのかな~と思ってみてみたら、
実行時間全体の30パーセントが _Unwind_SjLj_Unregister と _Unwind_SjLj_Register
というルーチンで消費されていました。
これはいったい何のためのルーチンなんでしょうか。
例外処理のためルーチンっぽい気もします。
冷害が発生したときのためにスタックをどこまで回復するか、
&どのデストラクタを呼び出すかを記録するための物なのでしょうか?
ソース嫁
そう。
30%ってことはマルチスレッドなんかね。
TLSへのアクセスのコストが大きいんじゃないかな。
gccのソースコードくらい展開しとくといいよ。
そしたらgrepすればすぐ見つかるから。unwind-sjlj.c。
sjljってSetjmp/Longjmpだな。catch/throw実現の
247 :
240:int 2ch =05/04/02(土) 10:17:42
gccをfindで検索しましたが見付かりませんでした。
本家のサイトにいって落してきたんですが、全部英語なもので。
日本語で説明してあるサイトなんてないんですかね。
例外ってそんなにかかんの?
C++の例外はかなりのコストでっせ。
例外ばかりでなく、デストラクタの巻き戻しにも関係しているので。
単体の関数呼び出しでは無視できるコストでも、
チリが積もれば山となって影響してくる。
デストラクタのチェインはリスト構造で、構造上キャッシュにも載りにくいから、
例外によるチェインを手繰る処理はかなり重くなる。
250 :
デフォルトの名無しさん:int 2ch =05/04/02(土) 10:53:41
今までWindows上でのプログラム経験しかないのですが、
Linux+GCC上でWinのレジストリ操作みたいな事は
どうやって実現するのでしょうか?
自分で設定ファイル読み書きするのかなぁとは思っているのですけど。
>>250 環境変数か、パス決めうちが流儀らしい
Windowsから見れば全く馬鹿げてると思うだろうが
>>251 ふつー設定ファイルを別に用意するが。システム共通の設定なら
/etc とか /usr/local/share あたり、個人設定ならホームディレクトリに
. から始まるファイル名 (.bashrc とかね)。
>>252 普通は/usr/local/shareに設定ファイルは置きません。
shareはアーキテクチャ独立なデータの置き場所。
/etcか/usr/local/etcかはたいした問題じゃなくて、
OS・パッケージングする配布者・個々の管理者によって流儀は異なりうるので
適当にどこか一箇所でマクロで定義しとけばいい。
もしくはautoconfを採用してconfigureの定義するマクロを使う。
254 :
250:int 2ch =05/04/02(土) 14:22:17
色々意見がわかれるのですね・・・
とりあえず一番簡単そうな設定ファイル方式で行こうと思います。
(アプリのカレントにapp.iniを作成)
いいかげんスレ違いだが、
よりによって一番おバカな方式にフォールバックするのは何故だろう。
っていうかいまだに
>>250みたいなことに悩まなければならない
お粗末なOSがあることが驚き
カレントにってのが意見の割れる原因なんだよね。
Unixスレだっけ?
ファイルのpathが一意に決まらないからとか、いろいろ言われてたの。
まあ、結局どんな方式でも一長一短なんだけど
それぞれの環境の流儀に従うのがベターだとは思う。
だからと言って、Win版apacheがhttpd.confを使わないでレジストリ設定になったら嫌だし
かといって、httpd.confが/WINNT/???/に作られるのもすごく嫌だけど。
unixだとコンパイル時に決まったりするからなあ
(諸般の事情で)移動させたら再コンパイルなんてアホくさ杉
これを譲ったとしても
>>256 のいうように悩まなければならない、というのはどうかしてるよね
お仕着せでも、ちょっと使いにくくても、
標準の方法やガイドラインがあるほうがマシ。
そもそもアプリケーションの捉え方が違うんだからしょうがない。
コマンドラインオプションで何でも決めるUnix文化にとって、
設定ファイルをどうするかなどということは瑣末な問題でしかない。
それでも、autoconfなりXtのリソースなり、ガイドラインはあるわけだが。
>>258 そこでシンボリックリンクですよ。
>
>>256 のいうように悩まなければならない、というのはどうかしてるよね
まぁ、標準化団体があってないようなものだからねぇ。ただ、現実問題として
それで困ったことはない。
かように、ム板ではWindowsしかろくすっぽ知らない奴がコンプレックスを感じて
暴れるので、ネタじゃないならUNIX板で尋ねるのがよろしい。
>>261 判らないなら黙ってろって。邪魔だから。
あはは。既に回答済なんでそろそろ結論が見えてきたところで書いたわけだが。
逆のコンプレックスの塊がGNOMEなわけだが・・・
いやそれならむしろKのほうが...
> まぁ、標準化団体があってないようなもの
*BSDは知らんがLSBにがんばってもらうか
ISOにもsubmitしたらしいし。
GNOMEだったら、libgconf。設定は処理するには。
本スレはUNIX/Linux板のプログラミングスレ、GNOME/KDEスレなど。
>>253 > 普通は/usr/local/shareに設定ファイルは置きません。
おれも share の下に設定ファイルを置くのはどうかと思うが、
意外と多いよ。有名どころのソフトだと vim とか tex あたり。
そうそう。texは頭が痛い。
tex周辺ツールの設定ファイルもカオスの中に叩き込まれるのは参る。
vimはetcに置かない理由がさっぱりわからない例だと思う。
Debianなので幸せだ。
/etc/{texmf,vim}
>>267 > 意外と多いよ。有名どころのソフトだと vim とか tex あたり。
vimは使ってないから良く知らないけど、tetexみたいにOSとは関係の薄いコマ
ンド群のパッケージの場合、それはもうそれでひとつの独立した世界を作って
る訳で、そういう場合に/usr/share/texmf/COMMAND_NAME/config/に設定ファ
イルがあるのは別に構わないんじゃないかと思う。
/etc/の下にはむしろシステム全体にかかわるような設定にだけ集中してもらいたい。
>>268 > tex周辺ツールの設定ファイルもカオスの中に叩き込まれるのは参る。
カオスってほどじゃないと思うのだが。場所は/usr/shate/texmf/COMMAND_NAME/config/
って決まってるし、COMMAND_NAME={dvipdfm|dvips|xdvi|...}だし。
>>270 >/etc/の下にはむしろシステム全体にかかわるような設定にだけ集中してもらいたい。
ハゲ同。
>>254 ユーザーが使うアプリなら ~/.appnamerc or ~/.appname/* が基本だと思う。
おまえら、GCCの話をしてください
RedHat Enterprise Linux 3.0のvimは/etc/vimrcに設定ファイルがあるよ。
GCC4.0ってどうなったん?
てかgdcを標準パッケージにいれてくれないのかなぁ。
>>274 >>199 ちょっと前のレスぐらい嫁。
で、ML の方見たら、
http://gcc.gnu.org/ml/gcc/2005-03/msg01077.html > I'm still shooting for an April 15th release. As I indicated
> previously, please do not mark any new non-critical regressions with
> the 4.0 target milestone; use 4.0.1 instead.
…だと。
> てかgdcを標準パッケージにいれてくれないのかなぁ。
需要が…(;´Д`)
276 :
デフォルトの名無しさん:2005/04/04(月) 15:36:17
linux suse9.0を使っています。gccを最新版にアップデートしたいのですが、prefixでインストールディレクトリを指定して上書きインストールしてしまっても問題ないでしょうか?
>>276 そういうのは SuSE スレに…。
普通、ディストリが提供しているパッケージ以外の方法でインスコするものは、
./configure --prefix=/usr/local とかで入れるものだ。
上書きすると何か問題あった時に元に戻せなくなるか、すげー苦労するぞ。
>>277 > 上書きすると何か問題あった時に元に戻せなくなるか、すげー苦労するぞ。
別に苦労なんかしないでしょ。上書きがあるかどうかのチェックなんて「ディ
ストリが提供しているパッケージディストリが提供しているパッケージ」で簡
単にチェックできる訳だし、チェックできなかったらパッケージングシステム
使ってる意味ないし。
結論:Windowsのレジストリはナイス。
よかったね。おめでとう。
>>278 s/すげー/不必要な/ で。
俺は libc 上書きしてパッケージどころか ls も使えなくなったことはあるけど(笑)。
そういや、FC4 Test 1 にはメインで gcc-4.0 入ってるんだな。
特に不具合とかは無いのだろうか…。
>>281 人柱になっていただくのですよ。
よさげならリリース後に入れる。
阿鼻叫喚なら4.0.1か4.0.2まで待つと。
FC3でgcc4を使って glibc, glib2, gtk2, firefox を ビルドしたものが無事動いた
コンパイル速度はどうですか。遅い機械使ってるもんで気になる。
285 :
デフォルトの名無しさん:2005/04/07(木) 14:04:19
>>284 486でも短いプロラムなら一瞬で終わった
286 :
デフォルトの名無しさん:2005/04/07(木) 14:47:23
configureファイルの書き方を教えてください
↑は、「gcc 4.0 RC2 も必要になったけど、まだ用意してないよ」という話。
(Apr 30 2005) GCC 3.3.6 release は予定通りになりそうかな
-masm=intelの出力がnasmで読めない件について
>>279 皮肉にも、Win のフリーソフトではレジストリを
使わないものが歓迎される傾向がある。
プログラム本体と同じフォルダ (=ディレクトリ) に
.ini ファイルを作るタイプのものが主流。
容易に設定を移行できるメリットがある。
自前での設定ファイルの書き換えも楽。
Win2000/XP にも、ユーザーごとのフォルダは用意されるので
ユーザーごとに .ini ファイルを用意することも可能。
おーヽ(´ー`)ノ
評価するぞ
時間ないけど
302 :
デフォルトの名無しさん:2005/04/22(金) 13:14:02
gcc4.0.0をmakeしてmake installしました。場所はデフォルトのusr/localです。
この後、環境変数などを設定したいのですが、どこに何を書けばよいのでしょうか。
OSはfedora core3です。
ふつう、環境変数なんて設定しなくても使えるぞ。
何を設定したいんだ?
/etc/profile
306 :
デフォルトの名無しさん:2005/04/22(金) 15:20:34
>>303 インストールしたのにgcc -vでバージョン見ると古いままなんです。
$ type gcc
$ /usr/local/bin/gcc -v
を実行して納得が逝かなかったら質問し直せ
308 :
デフォルトの名無しさん:2005/04/22(金) 15:55:15
>>307 パスをそこに通せばよいということですか?
309 :
デフォルトの名無しさん:2005/04/22(金) 17:42:31
>>308 単に gcc -v ってやってると、/usr/local/bin/gcc じゃないところの gcc が実行されてるんじゃないのかい?
って話だと思われ
310 :
309:2005/04/22(金) 17:45:30
>>309 が >308 一行目の $ type gcc についてで
んで、二行目の $ /usr/local/bin/gcc -v を実行せよってのが、/usr/local/bin/ にインストールしたと思ったけど
できてないんでないかい?
ということだと思われ
ま、/usr/local/binの方を先に宣言しておくか、aliasを使うかだね。
個人的には、後者のほうが手軽でいいと思うけど。。
「PATHは通したんですが、a.outを実行すると、~がないって言われるんです。」
もうお前ね、4.0.0試すなんて十年早いよと。
313 :
デフォルトの名無しさん:2005/04/23(土) 05:36:55
gccとg++のコマンドの違いを教えてください
314 :
デフォルトの名無しさん:2005/04/23(土) 06:40:38
>>311 alias g++='/usr/local/bin/g++'
としてg++ -vとするとうまくいきました。また、g++を使ったコンパイルもうまくいきました。しかし、コンパイルされたファイルを実行しようとすると
./a.out: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
というエラーが出て実行できません。何がいけないのでしょうか。libstdc++.so.6が存在しないというのはわかるのですが、解決方法がわかりません。
aliasだとMakefileで困らないの?
316 :
311:2005/04/23(土) 12:30:44
317 :
デフォルトの名無しさん:2005/04/23(土) 18:07:25
GCC4.0.0(Cygwin)
makeしたらエラー出るんだが、何がいけないのかな?
make[1]: *** No rule to make target `../include/ansidecl.h', needed by `regex.o'. Stop.
ansidecl.hが見つからない。
319 :
デフォルトの名無しさん:2005/04/23(土) 18:35:04
3.xを使ってみるまえに4が出てしまったか。
320 :
デフォルトの名無しさん:2005/04/24(日) 01:42:05
gccを使って作ったソフトを公開する場合は、
GPLに従って全部ソースコードを公開しなくてはならない。
>>320 「使って作った」が「ソースを流用して作った」と言う意味なら、当たり前。
4.0で興味があるのはこれでffdshowがいくらか速くなるのかということだ。
最近重くて再生が追いつかないのあるし。
Intelのコンパイラと比べて速くなる?
iclに勝てるわけないじゃん
4.0でも
gcc -S -masm=intel
の結果がnasmで読めないなんちゃってintel形式なのは直ってないのね_| ̄|○
intel形式なんて(゚⊿゚)イラネ
%./configure
% make
........
config.status: executing default-1 commands
./config.status: line 910: ./../../config-ml.in: No such file or directory
make: *** [configure-zlib] Error 1
これは何?
何って、見たまんまじゃないの?
ごめん。つまらんミスだった。
% cd ./gcc-4.0.0
% configure
としてしまった。build 用の directory を用意する必要があった。
面倒だな
330 :
デフォルトの名無しさん:2005/04/28(木) 01:18:12
教えて君ですまんが。
gcc -Wall で、switch case のcaseに列挙を使ったとき、
列挙型のすべての要素を並べてないと警告が出る、という機能があって、
でも、このはdefault節が付いてると抑止されるらしい。
マニュアルにはそう書いてあるし、実際の動きもそうなってる。
(The presence of a default label prevents this waring.)
これって昔からこうだったっけ?
昔は、defaultがあろうがなかろうが警告が出てたような気がするんだけど...
(気がするだけかもしれん)
ていうか領域破壊とかでとんでもない値が入っていることを検出するためには
defaultは必須なんだから、defaultつけて抑止されたんじゃ使い物に
ならないんだけど。
defaultの有無に関わらず怒ってくれるオプションとかあったら、
教えてくださいませ。よろしくお願いいたします。
うちのgccのバージョンは以下の通りだす。
2.95.3 20010315(release)
そのバージョンは知らんがgcc3.4にはある。-Wswitch-enum。
(-Wallには含まれていないようだ)
typedef enum {
HOGE_1,
HOGE_2,
HOGE_3
} hoge_t;
int test(hoge_t h) {
switch (h) {
case HOGE_1:
return 0;
case HOGE_2:
return 3;
default:
return -1;
}
}
> cc -Wswitch-enum -c aa.c
aa.c: In function `test':
aa.c:15: warning: enumeration value `HOGE_3' not handled in switch
332 :
デフォルトの名無しさん:2005/04/28(木) 02:40:22
gccはインテルのコンパイラみたいに、自動的にSIMDを使ってくれるのでしょうか?
やる気無い人間をやる気にさせるコンパイラオプションってありますか?
gcc -R18 moe.c とか..
gcc -R15 moemoe.c とか..
萌えた。
>>331 了解です。うちで今使ってるgccが古過ぎるんですね。
大昔に入れたっきりのVineに付いてきた奴だからなあ。
情報ありがとうございました。ver.upしよう…
343 :
デフォルトの名無しさん:2005/04/29(金) 17:42:23
4.0.0の場合-ffast-mathオプションを指定した場合、今までよりも高精度な結果を返すのでしょうか?
344 :
デフォルトの名無しさん:2005/04/30(土) 04:55:32
>>343 勘で言うけど普通逆じゃね?
速い代わりに不正確なんでしょ?
勘で言うけど速くて精度のいい演算をするためのオプションだよ
>>367 そうだとしたら、それをなんでわざわざオプションにしてるワケ?
バグが残ってます
GCC使えねえ・・
なぜdocumentを読まない。-ffast-mathは変数のチェックをさぼって高速化するオプションだって書いてあるじゃない。
つまりバグってるわけね
>>351 バグかどうかは仕様とセットでないと判断できんが。IEEE745 を仕様とするなら
-ffast-math は使っちゃダメ。
ただ計算したいだけなら問題ないと思う。たぶん。
VC6とgcc -ffast-mathの実行速度がほとんど同じなんだよなあ。
VC6はどうなっているのか…
354 :
デフォルトの名無しさん:2005/05/01(日) 02:52:54
Auto-vectorizationって使うには何かスイッチが必要なのでしょうか?
355 :
デフォルトの名無しさん:2005/05/01(日) 20:57:50
なぜ、いつになってもgccは
不定や未定義のコードに対して警告を出さないのですか?
>>355 おまえを含む全員が、コードを書いていないからだ。
359 :
デフォルトの名無しさん:2005/05/01(日) 23:07:27
> g++ -v
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.2 [FreeBSD] 20040728
にて下記のコードを書くと、
360 :
デフォルトの名無しさん:2005/05/01(日) 23:07:58
<pre>
#include <iostream>
using namespace std;
void func ( int n, int array[n][n] )
{
for ( int i = 0; i < n; i++ )
{
for ( int j = 0; m < 10; j++ )
{
cout << array[i][j] << " ";
};
cout << "\n";
};
};
int main ( int argc, void* argv[] )
{
int array[10][10];
for ( int i = 0; i < 10; i++ )
{
for ( int j = 0; j < 10; j++ )
{
array[i][j] = i + j;
};
};
func ( 10, array );
return 0;
};
361 :
デフォルトの名無しさん:2005/05/01(日) 23:08:21
こういうエラーが出るのですが、何がまずいのでしょうか?
> make
g++ -Wall main.cpp -c
main.cpp:4: error: `n' was not declared in this scope
main.cpp:4: error: `n' was not declared in this scope
main.cpp: In function `void func(int)':
main.cpp:10: error: `array' undeclared (first use this function)
main.cpp:10: error: (Each undeclared identifier is reported only once for each function it appears in.)
main.cpp: In function `int main(int, void**)':
main.cpp:5: error: too many arguments to function `void func(int)'
main.cpp:28: error: at this point in file
*** Error code 1
363 :
デフォルトの名無しさん:2005/05/01(日) 23:10:27
>>360 関数の引数宣言で他の引数を使うことはできないよ。
あと、GCC関係なくてスレ違いだから、普通にCスレいきな。
GCCについてのスレでCについて聞いてくる人の件ついて
>>360 c99 modeなら可能だが、c++では駄目
>361
とりあえず
4行目int array[n][n]をint *array
8行目for ( int j = 0; m < 10; j++ ) を( int j = 0; j < n; j++ )
10行目cout << array[i][j] << " "; をcout << array[i+n*j] << " ";
かな.....あとは大きいお友達に聞いてくれ。
368 :
359:2005/05/02(月) 08:40:41
>>366 サンクス。あなたが正解。他の人は間違い。
C99でできる機能は全てC++(というかg++)でできると思ってた。
g++だと無理なのね。
gcc用に書き直したらうまくいった(使う気はないが)。
素直にクラスを使えってことですかね?
16->32見てるとint型はポインタのサイズ(と言うかプロセッサの処理単位)にあわされると
言う前提があるように見える。
仕方がないことだ。
>>368 他の人は間違ってないよ
提示された条件であればむしろ他の人のが正しい
言ってる意味わかる?
C99で追加された可変長配列がgccで使えないことについて聞いてるんだから
>>366が的確な答えだろう。
他も間違ってはいないが的外れ。
GCCについて part5:368: warning: `#pragma golden_week on' may generate inconsistent response in this thread.
GCCについて part5:370: warning: `#pragma golden_week on' may generate inconsistent response in this thread.
GCCについて part5:372: warning: `#pragma golden_week on' is obsolete
GCCについて part5:373: warning: `#pragma golden_week on' is obsolete
( ・_ゝ・)ツマンネ
precompiled headerを使って複数ファイルのプログラムをビルドすると
リンク時に無名名前空間の中の参照変数が多重定義になってしまう。
PR/10591なんだけど、ずっと放置されてるなあ。そろそろなおしてくれないかなあ。
gccのwarningって個別に出す/出さないを制御できますか?
>>379 info gcc
うちでは
3.8 Options to Request or Suppress Warnings
に書いてある。
381 :
デフォルトの名無しさん:2005/05/23(月) 13:12:18
gcc4.0.0のインストール方法を教えてください。
OSはsuse9.2です。Yastしか使ったことがありません。
また最適化のためのconfigureおぷしょんも教えてください。
>>381 SuSE のことなんか知ったこっちゃねーので、SuSE スレに行ってください。
デフォルトのコマンドラインオプションをあらかじめ指定することは出来ないでしょうか?
specに入れとくとか。
C++ですが
Javaの例外みたいに、例外を投げる関数を
try/catch していないときに、警告を出すように
するオプションってありますか?
g++の例外処理がとても遅いのですがsjlj(setjmp/longjmp?)を使わない
で表引き法で処理するオプションってありますか?
ある。configure のヘルプ出力を眺めてみ。
>>388 configure のオプションには関係しそうなのがあるな。
最近はデフォルトで sjlj に依らない実装のはずだが。
>>388 g++の例外処理が重たいのは、どちらかというとデストラクタ巻き戻しに起因するC++自身の問題ではないかと思われ。
多少オプションいじったくらいじゃ、ほとんど改善しないよ。
>>389-391 皆様ありがとうございます。
調べてみます。
>>391 そうでしたか。
簡易DBMSを作っていたのですが,呼び出し回数の多い処理で例外を使うのを
止めたところ5倍くらい速度があがったので、例外処理を高速化すれば
もっと性能があがるかもと思ってました(profileをとるとsjlj…unwind系の関数が上位に
きてます。)
393 :
デフォルトの名無しさん:2005/05/25(水) 15:14:25
すみません、GNUのリンカーの質問は、どのスレッドで行えばよいのでしょう?
>>394 あ、いえ、リンカーのセグメントなどの指示をするロードスクリプトファイル(?)の
質問になります。
ここでも良いでしょうか?
まぁいいと思うけど、組込系とかの方が即答できる奴が多いかもしれない。
397 :
デフォルトの名無しさん:2005/05/25(水) 16:09:18
では質問します。
私はGCC環境は初めてです。ARMプロセッサのプログラムをGCC開発環境で
組もうとしています。趣味の用途での開発です。
ARMプロセッサには(フラッシュ)ROM領域やRAM領域があるため、リンカにてその辺のセグメント指示をしなくてはなりません。
そこで、リンカについて
ttp://www.gnuarm.com/にあった、リンカの説明書で勉強したり、いろいろなサイトで勉強をしました。
実際のサンプルとして、あるサイトにあったロードスクリプトファイルをみました。
そこで質問なのですが、その中のセグメント指定欄に、*(.rodata)などの記述がありました。
このrodataとは何なのでしょうか?
定数領域ってことじゃないの?
>>339 あ、ほんとだ。定数を記述した状態で*(.rodata)記述をとってリンクするとエラーになります。
ありがとうございました。
もしかすると基本的なことなのかな?
さすがに.textあたりは知っていたのですが、.rodataとか、他にも.glue_7とかありまして。
この辺の勉強をするのにおすすめのサイトや本はありませんか?
いろいろぐぐってみたのですが、みつかりませんでした。
コマンドオプションのリファレンス見ても載っていないんですが。
int a;
short b = a;
のような明示的でないダウンサイズへ対する警告を出力するオプションはないんでしょうか?
-Wall じゃ出すぎかね。
404 :
402:2005/05/31(火) 12:09:13
3.3.3なんですが、-Wallではでまんでした。
はでまんでした
はでまんならしょうがないな。
407 :
404:2005/05/31(火) 18:32:11
3.3.3なんですが、-Wallではでませんでした。
の間違いです...
一度はでまんになるともう何を指定しても駄目
漏れもはでまんと思う
-Wallなんて全然オールじゃないから。
ひとつひとつそれらしいオプションをつけてやらないとだめ。
確かに見当たらないなあ。
っつーかオプション一覧眺めてるだけで1時間使った。
オプション多杉。
412 :
404:2005/06/01(水) 12:36:01
>>411 お手数おかけしております。
自分もそれらしいを、色々試したりしたんですが、見つかりませんでした。
ひょっとして、ないんですかね...
413 :
412:2005/06/01(水) 12:37:44
× 自分もそれらしいを
○ 自分もそれらしいのを
また、間違えた...
414 :
デフォルトの名無しさん:2005/06/03(金) 11:45:48
intなどは使用するマシンによって、大きさが変わりますが、
使用するマシンにかかわらず、16ビットの整数型を使いたい場合どうすればよいのでしょうか?
C99使え。
415の訳:
#include <stdint.h>
int16_t var;
>>402-413 おまいら、しっかりしろよ!
厳密にソースチェックしたい場合はな、 lint 使うんだよ。
splint 入れとけや。
あー、そういやそんなのもあったっけか。
すっかり忘れてたぃあはははは。
ぬるぽ。
splintってC++使えたっけ?
文法の問題でもないしな、考えてみたら。
421 :
デフォルトの名無しさん:2005/06/07(火) 09:50:38
opteronでsuse linuxを動かしています。
m64を指定しないと64ビットコードを生成してくれないのでしょうか?
>>421 SUSE特有の問題だろうから、Linux板で聞いた方がいいと思うよ。
FreeBSD/amd64もNetBSD/amd64も、何も指定しなくても64ビットコード
になる。
423 :
デフォルトの名無しさん:2005/06/07(火) 14:10:43
#include <iostream>
using namespace std;
int func(char *s){
if(s[0] == NULL){return 1;}
return 0;
}
というコードをg++ -c *.ccでコンパイルすると「計算中にヌルが使われた」という警告が出ます。
char == NULL と言う書き方がbcc32では出来たのだけど
g++ではこの条件文をどう書けば良いのでしょうか?
if(s[0] == '\0')
426 :
デフォルトの名無しさん:2005/06/07(火) 14:59:57
wchar_t string[] = { L"日本語" };
このバグって修正されましたか?
>>426 試したことないけど、gcc-3.4 の -finput-charset で上手くいかないかな。
>>427 いきませんね。
というより、-finput-charsetがないんですが。
version 3.4.1
そりゃないよ。とっつあ~ん
>>423 >char == NULL と言う書き方がbcc32では出来たのだけど
やるなヴォケ
434 :
423:2005/06/08(水) 07:18:11
>>432 何故?
レベルの高そうな作者のWEBサイトのサンプルコードで==NULLとか!=NULLを見かけたので
疑う事なく使ってました。
>>434 ポインタ以外をNULLと比較するのは間違い。
無効ポインタを表現するためだけに存在するのが NULL。
NULL をポインタ以外に「入れられるかどうか」はこの際全く問題じゃない。
ポインタ以外に NULL 入れてる奴は、根本的に NULL がわかってない勉強不足の人。
もっとも、最近じゃ NULL = 0 が言語仕様として確定したから、
普通はマクロ使われてる NULL 自体を 0 で書く人も増えてるらしいが。
>>436 NULL=0 になったの?
NULL==0 が真というのは大昔から決まってたことだけど。
>>437 なったはずだよ。
C99からかもだけど。
> 無効ポインタを表現するためだけに存在するのが NULL。
おいおい、誰がそんなこと決めたんだよ(w
> ポインタ以外に NULL 入れてる奴は、根本的に NULL がわかってない勉強不足の人。
どう見ても、お前もわかってるようには見えないんだが。
なら他に何を入れろと。
NULLをポインタ以外に入れるなんて、タンポンをアナルに突っ込むくらい使い道が違うぞ。
たとえば文字列の最後はNULL
>>439 436の言うとおり、C言語では今でも
NULL == ( (void*) 0 )
ただしC++は NULL == 0
C、C++とも文字列終端文字は'\0'
0 != NULL != '\0'
MSのドキュメントが文字列終端をあらわすのにNULLをつかってるのは、
VC++の言語使用。
世の中の入門書はVC++関係が多いので結構勘違いしてる人が多い。
ただ、素で間違ってる著者も結構いる。
あと、
int == 4byte
char == signed char
1byte == 8bit
こういうのが常識だと思ってると、場合によっては痛い目みる。
>MSのドキュメントが文字列終端をあらわすのにNULLをつかってる
マジスカ!?
そんなスカポな真似してるのか、MSは…
>>443 MSのやつはオリジナルのドキュメントが "null terminated" と書いているところを、
日本語に訳す段階で「NULLで終わる」と間違えたもの。言語仕様ではない。
>>443 C99では数値の0もNULLポインタ。int *p = 0; int *q = NULL; なら p == q は常に真。
さらに'\0'の値はゼロ(0)と決まってるので char c = '\0'; なら c == 0 も常に真。
447 :
443:2005/06/08(水) 11:20:00
話がだいぶそれたけど、つまりC,C++共にNULLは、
アドレスポインタが無効であることを表す値であって、
文字列終端文字ではないってこと。
NULLポインタの値はゼロに決まってる。
("C guarantees that zero is never a valid address for data")
文字列終端文字'\0'の値もゼロに決まってる。
("the null character, whose value is zero")
"NULL"も"'\0'"も値ゼロを示す単なるニモニック。
NULLはポインタ、'\0'は文字列終端用に定義されてるけれど、別の文脈で値ゼ
ロを示すために使うのが禁じられてる訳じゃない。
>>448 どこからの引用かと思ったら、K&Rかよ。
いいからCFAQ読んでこい。
> いいからCFAQ読んでこい。
そのCFAQでも「キャストの付いていないNULLはキャストの付いていない0と同
等である」ってはっきりと明示されてますが、何か?「NULLを使うことは (0
を使うのと違って)、ポインターが関係していることの親切な注意書きでしか
ない」とまで書かれてるし。そもそもCFAQのReferencesにはK&R1、2が使われ
てるんだけど。
>>450 よく読め。
「キャストの付いていないNULLはキャストの付いていない0と同等である」
のすぐ後に続いて、
「NULLはポインターとしてのみ使うべきである。」
と書いてあるだろう。
「ポインターが関係していることの親切な注意書き」というのがわかっていれば、
ポインターが関係していない場所で使うのがどれだけ迷惑かわかるだろ?
CFAQ の Reference に K&R があったからといって、
オマエやそれ以外の人が K&R 仕様のコンパイラを使っているということにはならない。
本当に自分の使っているコンパイラが K&R, C89, C99 のどれに準拠しているのか知ってるのか?
大したネタじゃないのに、必死になって粘着せんでもいいぞ
>>450 無効ポインタが NULL という抽象表現になっていて、イコールゼロじゃなかったのは
中にはゼロアドレスが有効だったり、特別な無効アドレス値を予約してるプロセッサ系が
存在していた歴史的な事情があるからで、今となっては有名無実なものとなったので
C++やC99で改めて 0 と等価になっただけで、それまで NULL は(多分)ゼロだろうが
ゼロ = NULL と保証されているいうわけじゃないし、ゼロ表現のために必要ないところで
NULL をわざわざ持ち出す理由も意義もない。
454 :
デフォルトの名無しさん:2005/06/08(水) 12:44:08
NULLぽは((void*)0)というのは仕様で
その値そのものも0 というも現状正しいが
0とNULLを等価に扱うのは用法として
「美しくない」ということでFA
>>454 おまえもCFAQをよく読め。
ということでFA
>>452 > 無効ポインタが NULL という抽象表現になっていて、
抽象表現って何だよ?ただのマクロだろが。
> ゼロ = NULL と保証されているいうわけじゃないし、
だからC89の段階(KR2)で既に保証されていた訳だが。
> NULL をわざわざ持ち出す理由も意義もない。
454の言う通り「こうした書き方が上品」という話と「こう書くのは間違ってる」という話とは
まるで別物。ポインタ以外をNULLと比較しても、何ら間違いじゃない。混乱の元だが。
>>456 混乱の元 ⊂ 間違い
少なくとも「何ら」というのは言い過ぎ。
>>456 > > ゼロ = NULL と保証されているいうわけじゃないし、
> だからC89の段階(KR2)で既に保証されていた訳だが。
この文脈で「ゼロ = NULL」というのは
「ヌルポインタのビットパターンはすべて0である」ということだと思うが、
C89では保証されて無いだろ。
460 :
455:2005/06/08(水) 13:03:17
え?なんで?
とりあえず読み直すべきはC FAQじゃなくてJIS X3010:2003だよね。
Web上からPDFで閲覧できるよ。仕様の話はまず仕様書から。
なんでISOじゃなくてJISなんだって突っ込む人いるといけないから
断っとくと、X3010:2003のISO/IEC 9899:1999との同等性は「IDT」に
分類されるから、編集上の変更以外の技術的内容は一致している。
これでこの話題終了だな。
そもそもGCC関係ないし。
>>459 > この文脈で「ゼロ = NULL」というのは
> 「ヌルポインタのビットパターンはすべて0である」ということだと思うが、
> C89では保証されて無いだろ。
空ポインタと空ポインタ定数の区別が付いてないでしょ?
いや、皆して一度話を最初から読んでみろ。
皆自分に都合のいい情報だけ拾って好き勝手書いてる。
既に書かれてる事を恣意的に無視してるとしか思えん
続きは
>>465へ。
ヌルポインタは整定数0に置き換えても問題なく、ただ見た目の違いだけだが
NULLは、C89に於いて(void *)0とdefineされている場合があることも明示されているので
NULLをポインタ以外の用途で比較等に用いるのは
C89に於いては、明らかな間違い。
「ヌルポインタ」の代わりに
NULLを使うのも、0を使うのも、正しい。
「0」の代わりに
NULLを使うのは、間違い。
「NULL」の代わりに
0を使うのは、正しい。
但し、この場合はNULLがヌルポインタの意味で使われていることが前提。
ヌルポインタ以外の意味でNULLが使われているとしたら、それ自体が間違い。
>>470 最初からほとんどの人間がそう言ってる気がするんだが。
総括ってことでいいんだな?
お前らのぬるぽは、この漏れが一身に頂いてゆく!
さあ、漏れを殴って気を済ませろ!
これでこの話はおしまいだ!
おしまいなのはお前だろ 消えうせろチンカス
ガッ
>>456の一番最後の行辺りは、明らかに勘違いしてそうだが。
>>470 > 「0」の代わりに
> NULLを使うのは、間違い。
それは処理系依存でしょ。実際に #define NULL 0 な処理系もあるわけで(GCCがそう)。
その場合、整数定数0の意味でNULLを使うのは可能だよ。読み手にひどく意地悪な書き方だけど
> ヌルポインタ以外の意味でNULLが使われているとしたら、それ自体が間違い。
だからこれも処理系依存だね。
処理系依存つーか、マヌケな処理系ってだけだな。
ほとんどの場合、その環境下でも処理系の影響は受けないだろうから
処理系「依存」じゃあない…かもしれない。
ていうか、この話題になると急に元気になる奴を昔からよく見かけるが
何か深い理由でもあるのか?
昔煽られたのがトラウマになってるとか。
>>474 > 実際に #define NULL 0 な処理系もあるわけで(GCCがそう)。
gcc使ってて、コンパイラとライブラリの区別ついてないのは恥ずかしいぞ。
うちの環境でC対象でgcc使うとNULLは(void*)0になる。
要するに、変な祭りになるから使うな、が正解ですか?
>>476 gcc だと拡張機能で __null なんてのもあるしな。
>>477 なにも自分のレベルを馬鹿と合わせる必要はない。
479 :
デフォルトの名無しさん:2005/06/08(水) 18:12:44
CGIスクリプト中で、HTMLを表示するときに、
『print文』や『ヒアドキュメント』を使用するのですが、ただ単に文字を表示させることはできます。
ところが、入力フォームを表示させようとするとエラーになってしまいます。
言語はperlです。
print "<html>";
print "<HEAD><TITLE>ID PASS</TITLE></HEAD>";
print "<body>一致したよ";
print "<form method="get" action="kakikomi.cgi">";
print "<input type="hidden" name="kakusuid" value="$ide">";
print "<input type="hidden" name="kakusupassw" value="$passw">";
print "<input type="submit" value="toukou">";
print "</form>";
print "</body>";
print "</HTML>";
エラーの種類は二種類出てきます。
一つは、構文エラーで、
もう一つは『使用できない文字があります』
の二つです。
後者のエラーは、スクリプト中の"toukou"を"投稿"としたら出てしまいます。しかし、スクリプト前半の『一致したよ』という日本語はしっかり認識されているのに…です。
前者のエラーは、"投稿"を"toukou"とすると出てきます。
しかし、どこが間違っているのか、全く理解できません。
もしかしたら、CGIスクリプトの中では入力フォームは使えないのではないかと思っています。
上記のスクリプトの前後は省略していますが、フォーム入力に関する何行かをコメント扱いしたら、しっかり動いてくれるのです。しかも、『一致したよ』という日本語も表示してくれます。
尚、スクリプト中の変数は、すべて省略部分にて定義してあります。
どなたか、このスクリプトの間違いを教えてくださいませんでしょうか?
よろしくお願いします。
火消し乙(ププ
>>479 スレまたは板が違います。
ヒント: " の対応関係
言語はperlです。
言語はperlです。
言語はperlです。
>>479 たぶんスレの内容を判断するところでミスってると思うよ
簡単に修正するとすればスレタイに"perl"という文字列が含まれているかチェックしておけばいいと思う
本当は文章を解析すればいいんだろうけど
さすがにそこまでやると大変だからね
484 :
デフォルトの名無しさん:2005/06/08(水) 20:54:06
ヌルヌル言ってるやつはこうだ!
( ・∀・). | | ガッ
と ) | |
Y /ノ人
/ ) < >__Λ∩
_/し' . V`Д´)/
(_フ彡 /
gcperlが出たのかと思った。
>>474みたいなバカが存在する限り
そのバカを煽る輩(=俺)も出てきます。
ANSI/ISO規格において、NULLを
#define NULL (void *)0
と定義することを許している。
これはつまり、「ヌルポインタ以外の用途でNULLを使ってはいけない」と
規格で定めていると言い換えても良い。
規格に従った処理系でコンパイルエラーになるようなソースを
「処理系依存だから良い」などと言い切るバカはおまえくらいなもの。
普通は、規格に従った処理系でエラーになる場合
「規格で許されていないから」と判断する。
すなわち、NULLをヌルポインタ以外の用途で用いることは
規格で許されていない。
「ある処理系で出来た」からと言っても
「出来る処理系もあるから、それが可能かどうかは処理系依存」
とはならない。
C89規格において
「関数内関数を作れるか」
「配列の要素数を変数に出来るか」
これらが可能なコンパイラがあるとしても、それは「処理系依存」ではなく
ただの「独自拡張」に過ぎない。
規格では、どちらも明確に「出来ない」と定められている。
その処理系でしか絶対に使わないソースで
非標準であることを理解した上で使う分には構わないけどね。
ここはGCCスレだし。
おうオマエらこれコンパイルしてみて下さいますです?
#include<stdio.h>
int func(int *hoge) {
}
main() {
int *fuga;
func(&fuga);
}
警告ではなくエラーにしろって事?
gccでコンパイルすると警告の文が面白くならない?
: warning: passing arg 1 of `func' from incompatible pointer type
変かな?
型の違うポインタを渡してるよ、って意味かと思うけど。
exciteで翻訳したら
両立しないポインタタイプから'func'のarg1つを通過します。
になったけど。
意味不明。何が面白いのかさっぱりわからん。
実際に型が違うじゃねーか。
>>486 > ANSI/ISO規格において、NULLを
> #define NULL (void *)0
> と定義することを許している。
#define NULL 0 と定義することも許してる。
"An integer constant expression with the value 0, or such an
expression cast to type void *, is called a null pointer constant."
"NULL which expands to an implementation-defined null pointer constant"
なんで、
> これはつまり、「ヌルポインタ以外の用途でNULLを使ってはいけない」と
> 規格で定めていると言い換えても良い。
とは言えない。NULLがvoid *なのか整数定数なのかは処理系依存。
本物の知障ですか?
「運良くNULLが0と定義されている環境」でコンパイルが通ったけど
「標準規格に準拠した別の環境」でコンパイルが通らない、
こんなソースは標準に従ったソースとは言えない。
つまり、0の代わりにNULLを使用しているソースは標準に従っていない。
「NULLがどうdefineされているか」は処理系依存だが
「ヌルポインタ以外の用途にNULLを使って良いか」は、決して、処理系依存ではない。
>>474(=
>>456他)の説
標準規格でNULLを0とdefineする事も許されるので
double f() {
return (NULL + 5) * 123;
}
が可能かどうかは処理系依存である。
例えコンパイルエラーになる処理系があるとしても
このコードは標準Cに準拠した正しいコードである。
同様に、標準規格ではベンダーの独自拡張も許している。
したがって、
int f() {
__asm { rdtsc } return _EAX;
}
が可能かどうかは処理系依存である。
例えコンパイルエラーになる処理系があるとしても
このコードは標準Cに準拠した正しいコードである。
同様に
int f() {
あqwせdrftgyふじこlp;
}
が可能かどうかは処理系依存である。
例えコンパイルエラーになる処理系があるとしても
このコードは標準Cに準拠した正しいコードである。
もし一番下の「このコードは標準Cに準拠した正しいコードである」を否定するのであれば
「このようなコードは、標準Cでは正しくない」となる。
これは上2例についてもそのまま当てはまる。つまり、
「NULLをポインタ以外の文脈で使うコードは、標準Cでは正しくない」となる。
逆に、NULLをポインタ以外に用いることが許されるのであれば
int f() {
あqwせdrftgyふじこlp;
}
も標準として許される、と言って良い。
>>495 まずstrict conformingとconformingを区別するところからはじめよう。
つまり、標準Cに厳密に準拠したとは言えないものの、
int f() {
あqwせdrftgyふじこlp;
}
は、標準Cに準拠した正しいコードであると言いたいわけですね。
よくわかりました。
ていうか
バカ?
誘導されてまでここでやるなよ。
でもさ、そうまでしてNULLぽの定義とか躍起になって定義してる
ANSI/ISOなのにさ~ どうして i=i++; を未定義とかで逃げてんのかね
副作用点がどうのこうのというのなら、きっちり定義すりゃいいんだ
委員会は面倒くさがりなアホッ子集団じゃねーか
503 :
432:2005/06/09(木) 10:37:40
異常に荒れてて笑った。
sizeof(char)==1なのは規格で保証されている。だから、
すべてのi++の代わりにi+=sizeof(char)と書いてもコンパイルは通るし問題なく動くだろう。
double getAngle(); //角度を返す(単位はdegree)
double sin(double); //正弦関数(引数の単位はradian)
という関数があったとき、
sin(getAngle());
とやってもコンパイラは文句をいわないだろう。
そういった意味においては、NULLを0の代わりに用いるのもありなのかもしれない。
かといってそれを実際にやったら狂人だが。
0 または (void*)0 が NULL ポインタに「なり」ます
また NULL は 0 または (void*)0 と定義されます
NULL ポインタは 0 とは限りません
定数 NULL と (内部表現の) NULL ポインタ は別です
であってる?
>>502 そんなん知るかボケ
こんなのは演算子の優先順位と同じだろ
確かに一意に決めると最適化効率下がりそうだけど、根性で何とかしろ
あとあれだ、2進数表記をそろそろ許せよな
毎度毎度gccにパッチ当てんの面倒なんだよ
>>505 >根性で何とかしろ
だったらあんたが根性でなんとかしなさいよ
>毎度毎度gccにパッチ当てんの面倒なんだよ
マクロで十分
変なコード書くな
>>506 2進表記がマクロで十分?
そう簡単に書けるとは思わないなぁ。
gccは言語拡張は排除していく方向みたいだからナァ。
2進数表記をC/C++標準に取り込んでもらわないとムリじゃないかね。
自前でプリプロセッサ書くのがいいんでは。
JavaやD言語など他の言語でのnullの扱い方を考えれば、
NULLを無効なアドレスポインタを表現するため以外につかうことが、いかにナンセンスかわかるだろ。
C++では
NULL == 0じゃない。
#define NULL 0
されたNULLがヌルこう覚えとけ。
文字列終端表現に使用するなんてもってのほか。
511 :
506:2005/06/09(木) 12:33:02
>>510 > JavaやD言語など他の言語でのnullの扱い方を考えれば、
> NULLを無効なアドレスポインタを表現するため以外につかうことが、いかにナンセンスかわかるだろ。
必死なのはわかるけど、ナンセンスかどうかが問題じゃなくて、言語の仕様と
して禁止されてるかどうか、って話だから。JavaやDを持ち出すこと自体ナンセンス。
> C++では
> NULL == 0じゃない。
C++ではそもそも「NULLは使わないでよ」ってハゲが書いてるし、「どうしても使いたかったら
const int NULL = 0;」ってなってるくらいなので、 NULL == 0。
> #define NULL 0
> されたNULLがヌルこう覚えとけ。
だからC++ならハゲの言う通りマクロは止めようね。
513 :
デフォルトの名無しさん:2005/06/09(木) 12:54:12
\ ヽ | / /
\ ヽ | / /
\ ヽ | / /
殺 伐 と し た ス レ に 裸 の 救 世 主 が ! !
\ ヽ / /
‐、、 \ / _,,-''
`-、、 ,. -―――- 、 _,,-''
-、、 /:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:\ _,,-''
/:.:.:.:.:.:.:.i:.:.:i:.:.:.:.:.:.:.:.:.:.ヽ:.:ヽ
l:.l:l:.:.:.:.:/|:./ハ:.:|ヽ:.|:.:l:.:.:.:lヽ:l
───────‐ l:.l:.:l:.:!l:.|_Vム N、.|ハ:l:|:.:.:l:.l.:l ───────‐
l:.l:.:.ト「`′ ``j∧|:.l:.l
. l:.:|:.:.:l ,z== ==ュ. /:.:.:!:.l
l:.:.|:.!:.ヽ:.:.:.:.: ' :.:.:.:.:.:/:,:.:|:|:.:l
. l:.:.j∧:.:lヽ ー一 /ィ/j/:.l:!
l:.:.:.:./:.ト\ /'::.:.l:.l:.:l:l
. l:.:.:.〃/:/://`; ー―‐;:´::l.:l:::.:.:l:.l:.:l:l
l:.:.///:/:/-‐ ′ ー-l:.l::::.:.:l:.:l:.l:l
l:.:/:/ィ/:/ l:.:l丶、l:.:l:l:l
,'´\ ―/:./:./| |:.i l:.:l l:l:.:l:l:l―― /`i
! \ _,,-┐. : ̄: :ー: |:.|_ _ l:.:l _.l―:  ̄: . r‐-、、 / !
>>504が激しくスルーされてますが、そうです。
「定数 NULL」じゃなくて「マクロ NULL」ですが。
「0」や「(void *)0」と「ヌル・ポインタ」も別ものです。
なぜgccでは2進数表記を許していないの?
printfでも出力できないし。
仕様で決まってるから、とかじゃなく
なぜ仕様をそうしたのかの理由が知りたい
K&Rに無かったから。
まだNULLの話をやっていたのか。
gcc拡張にいれればいいのにね。
文字列リテラルの\uエスケープあたりと違って上位互換性問題にならないだろうし。
16進数表記のほうが4つまとめて見れるからはるかに見易いと思うけど
昔のGCC拡張にはあった気がしたけどなあ。
0xFF とかの代わり 0b1101001101 とか書くの。
記憶違いかな。
521 :
504:2005/06/09(木) 15:41:01
>>522 おお、そう言えば!
すっきりしますた。ありが㌧。
>>504,514,521
釣りかと思ってたんだが、マジで言ってたのか。
あの流れの中であんな曖昧な記述に同意を求めるのは釣りとしか思えなくてスルーしてた。
>>525の考える曖昧でない記述ってのはこのスレではどれ?
>>504は長さと正確さがいい案配だと思うが。
> NULL ポインタは 0 とは限りません
なんかは緩い表現ではあるが。
527 :
525:2005/06/10(金) 02:20:11
>>526 曖昧でない記述を全部挙げるわけにはいかないんでカンベンしてくれよ。
ただ>504の曖昧さなら指摘できる。
まず、全て大文字の "NULL" を stddef.h で定義されている
例のマクロ以外の意味で使うのは混乱の元。MSの日本語ドキュメントと同罪。
また "0" を、ソースコード中に表れるそれを指す場合と、
ビットパターンが全て0の値を指す場合が混ざっている(と思われる)。
最後の「定数~は別です」という文に至ってはまったく意味不明。
>>527 どうやらわかってないのは525って感じだね
2進数 ←→ 16進数
って頭で直に変換できるぐらいの能力って必要じゃない?
530 :
526:2005/06/10(金) 05:50:16
>>529 必要だと思う。が、2進数で書けたら良いな、と思うこととは別。
532 :
525:2005/06/10(金) 07:31:28
>>530 リンク先と>527の指摘は矛盾するということか?どこが?
いいから喪前ら他所でやってくれ。
とにかく、2進表記は必要です。ほしいです。
いや、別になくてもいいけど、あったら便利です!
だからパッチはあてつづけます。ツンデレですから。
536 :
525:2005/06/10(金) 10:29:20
2進表記ってひらがなだけの文章みたい。いらね。
ひらがなが日本語に不要だと、君は!
とまではいかんが、多少なりと可読性を上げられるところはあるだろうし、
あればあったで有用なんじゃないだろうか。
現在メインストリームのコンパイラが独自拡張ですらサポートしていないって時点で
どうでもいいものと捉えられている(もしくは眼中にすらない)のには違いないんだろうけど。
8進より有用だとは思うけどまあなくて困らないね。
マクロで十分
マクロでどう書くの?
#include <bindigit.h>
-- bindigit.h --
#define B000000000000000000000000000000011
#define B000000000000000000000000000000102
#define B000000000000000000000000000000113
~
>>542 32bit分でもたった4294967295行だしな。
ほんの150Gbyteくらいのサイズのヘッダを作るだけですむのでオススメ
#define B0000 0x00
#define B0001 0x01
……
#define BITS8(b0, b1) (((b0) << 4) | (b1))
#define BITS16(b0, b1, b2, b3) ((BITS8((b0), (b1)) << 8) | BITS8((b2), (b3)))
#define BITS32(b0, b1, b2, b3, b4, b5, b6, b7) ((BITS16((b0), (b1), (b2), (b3)) << 16) | BITS16((b4), (b5), (b6), (b7)))
ちょっとは現実的?
C++でそれなりに直感的に書けるようにしてみる。
#include<iostream>
#define _0000 (0)
#define _0001 (1)
・・・途中省略・・・
#define _1110 (14)
#define _1111 (15)
class B {
int m_i;
public:
B( int i ) : m_i( i ) {}
B operator ()( int i ) { return B( m_i<<4|i ); }
operator int( void ) { return m_i; }
};
int main(void) {
int h= 0x50af;
int b= B _0101 _0000 _1010 _1111;
std::cout<< h<< "\n"<< b<< "\n";
return 0;
}
#define BITS8(n) \
((((0##n)>> 0)&1)<<0)+\
((((0##n)>> 3)&1)<<1)+\
((((0##n)>> 6)&1)<<2)+\
((((0##n)>> 9)&1)<<3)+\
((((0##n)
>>12)&1)<<4)+\
((((0##n)
>>15)&1)<<5)+\
((((0##n)
>>18)&1)<<6)+\
((((0##n)
>>21)&1)<<7)
#define BITS16(a,b) ((BITS8(a)<<8)+BITS8(b))
#define BITS32(a,b,c,d) ((BITS16(a,b)<<16)+BITS16(c,d))
e.g.)
printf("%08x\n",BITS8(11110000));
printf("%08x\n",BITS16(11110000,11110000));
printf("%08x\n",BITS32(11110000,11110000,11110000,11110000));
547 :
544:2005/06/11(土) 17:36:56
548 :
デフォルトの名無しさん:2005/06/11(土) 18:08:51
いや、そんなんされてもうれしくないし
いやいや、使わせて貰います。
class B_ {
int m_i;
int t( int n ) const { return tbl[(n^(n<<4)^(n
>>5))&0xf]; }
static const int tbl[16];
public:
explicit B_( int i ) : m_i( i ) {}
B_ operator /( int i ) const { return B_( m_i << 4 | t(i) ); }
operator int( void ) const { return m_i; }
};
const int B_::tbl[]= {0, 1, 4, 5, 14, 15, 9, 8, 2, 3, 6, 7, 11, 10, 12, 13};
const B_ B(0);
使い方
int b= B/0101/0000/1010/1111;
2進<->16進が出来ない人っているの?
おまいら、もう4にいってるの?
使ってるバージョンと理由を教えてくれ
俺はいまだに3.3.3だが・・・
理由は、3.3.3で満足してるから・・・
常用は3.3.5
漏れは3.2.3。
深刻な不都合は特にないので、なんとなく。
3.4系は、それまでの自社ライブラリ(特にテンプレート類)にかなり修正加えないと
使い物にならないことがわかってるし、面倒なので評価が固まるまで保留してる。
3.3.6 があるでよー
556 :
デフォルトの名無しさん:2005/06/12(日) 16:55:40
stdlibc++ 6
が見つかりもはん!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
どこにありますか。
libstdc++ じゃなくて?
なんとなく4.0.0を使ってみたくなって、
cygwin上でビルドしてみたけど、いたるところでエラーでてビルド停止。
悪戦苦闘の末にやっとこ、ビルド完了したけど。
最初のConfigureでいくつかオプション設定し忘れて、結局使わずじまい...
cygwin上で使うばかもいるんだな
Intelのコンパイラ買えよ
gcc4もメジャーバージョンアップの割にあんまたいしたことないな
え?なんで?
もうちょっと勉強してきてくれ。
561は559へ
PCH他の期待視されてた機能の大半が商用コンパイラ未満の性能しか発揮しなかったらか…
旧コードとの互換性って意味でも厳しいし。
クロスコンパイル環境が欲しい場合には、他に選択肢が無いのは確かだが、
4系を使うまでもない…つーか使ってらんない。
俺はWindowsとGNU/LinuxではIntelのコンパイラ使ってんぞ?
あれほどすごいものはないとおもう
CPU作ってるメーカが出すコンパイラと
オナニーしながら、利腕1本で書いてるコンパイラの違いだってまさに思う
とりあえず564はオナニーするときに利き腕は使わないということが
理解できた。
ここにいるやつらは、Intelのコンパイラが買えないから
gcc使ってるやつらが9割5分でしょ
WindowsのPBMWは20万ちょいだし
Linuxのだと10万弱
他にも、ツール系買ったとして80万弱
最小限のツールで50万強
てきとうなもん作れば、こんくらいすぐ儲けられるけど
ちょっとしたもんもつくれないやつらが使うのがgcc
>>566 世の中 Windows や x86 の仕事ばかりではないので。
あと gcc やら Linux やらの開発者がボランティアばかりだと思ってるなら、
お目出度すぎ。ボランティアもいるが、企業が金出してプロの開発者を投入
してるのも多い。
大企業による体の良いダンピングで、泣いてる企業も多いが、今さら言っても
詮無きことだ。一個人としては、せいぜい流れに乗るまで。
>あと gcc やら Linux やらの開発者がボランティアばかりだと思ってるなら、
>お目出度すぎ。ボランティアもいるが、企業が金出してプロの開発者を投入
>してるのも多い。
こいつのほうがおめでたいな
目次だけよんで
本を読破したつもりになってるようなひとだろうね
WindowsでわざわざCygwin使ってる理由なんて大体推測できるでしょ。
そしたら、あなたたちのような、瞬時に数百万も稼ぎ出す方々なら、
必然的にGCC使う理由もわかると思うんだが。
ましてや、Windowsネイティブなコードはかせるだけなら、
フリーでも他に選択肢あるわけだし。
>>564 の、言ってる意味がわからない奴が
どんなコードを書いてるのか気になるな
>>570 職業プログラマにGCC使ってる奴はそういないと思うぞ
なにより、そいつが本当の職業プログラマで
その危険性に気づかない奴は糞
危険性って?
IBMのRational Software ArchitectとかWebSphere Studio Device Developer
とか買うとWindows版でも標準コンパイラはgccだけどな。
>>573 ソイツが何をいいたいか俺はしらんが
俺はコンパイラになに使ってるのかばれるのは危険だと思う
そのコンパイラ固有のバグを一斉に突かれるからな
しかも、ソース出てるんだからその回りのソース読めば
他にも突けるところを、比較的探しやすい
>>575 使ったコンパイラの種類がバレないようなコンパイラってあると思ってんの?
自分で自分のウザさに気がつかないのは池沼
マック最高!
>>572 いや、だからさ。
WindowsでCygwin使う意味、というかCygwinの存在意義ってなによ?
それ考えれば、GCCを使わないといけないシチュエーションもわかると思うんだが...
ちなみに俺は職業プログラマだよ。
もちろんGCC(も)使ってる。
580 :
デフォルトの名無しさん:2005/06/13(月) 11:06:08
どざ氏ね
またよくわからない流れにー。
職業プログラマですがgccメインですよ
メインプラットフォームがLinuxですから
それがGNUクオリティ
GCC が最強
EGCS みたいに GCC 最適化コード生成プロジェクトみたいのできないかな。
ICC が GCC より早くて当り前だろ。
Intel 自身がアーキテクチャ開発してるからってのもあるが、
アーキテクチャの仕様の詳細まで公開してるわけでない。非公開部分もある。
だから GCC の i386メンテナは ICC を Hack するしかないという罠。
もうICCの話題はいいじゃん…
>>585 レス見てたら
誰もおまえのように頭が回る奴はいないみたいだけどな
自分で職業プログラマでgcc使ってるとか言ってる奴は
アフォかと思うね
まぁ、Linuxって言ってる時点でどの程度の頭か理解できるけど
>>576は、逆アセンブルして うぎゃーーとか言ってるひと?
大体ヘッダ付加しないオプションがある商用コンパイラと言うものを知らないのか?
あ、GCCが最高とか言ってるやつだからか
すまんね
ほっといてやれよ
世の中には自分が知ってることが全てで
自分のいってることが全て正しいと思ってる奴もいるんだから
レス見てたらわかるだろ?
このスレにはそういう奴の巣
犬糞板いってやれや
あぼ~ん推奨ワード教えてくれ
この板に来るべきでない奴が、たびたび書き込みしてくる件について
GCC 関連の話題以外は(゚⊿゚)イラネ
じゃあ、俺がgccの話題を振ってやる
gccのソースってなんでここまで暗号っぽいんだ?
知合いのプログラマにコンパイラのソースもよまへんで
最適化を語るなっていわれたから読んでるんだが
こんなの読めるだけで神だな
知合いのプログラマは読んでなくても俺にしたら神だが
最適化技術の勉強のためにコンパイラのソース嫁ってのはわかる理屈だが、
GCCはそれ以外の部分も凄まじい事になってるしなあ。
ソースコードが手に入るのは確かだが、参考になるかって言われると
色んな意味で微妙だぞ。
漏れも以前クロスコンパイラ用意するときに仕方なく読んだが、もう二度とやりたくない。
パッチパッチパッチの嵐、
方々でルールの統一がとられてない、
元がCとは思えないマクロ固めの変態新造言語による謎ソース、
動的に構成されすぎるmakefile
…うなされたよ。
こと最適化に関する部分だけなら、ある程度ターゲットを絞れば
なんとか読めるのかもしれないけどさ。
$ cat sample.c
#include <stdio.h>
struct A {
int length;
char tmp[0];
char a, b, c;
} __attribute__((packed));
struct A buf;
int main()
{
printf("sizeof(buf) = %u\n", sizeof(buf));
return(0);
}
$ gcc sample.c -o sample
$ ./sample
sizeof(buf) = 7
$
↑これ FAQ? 結果が 8 になると思っていたのだが..
>>594,595
なにをいまさら言ってるのかと、小一時間(ry
ほんとだ、なんで8じゃないんだ?
char tmp[0];
の罠かと思ったけど違うし
俺は、gccのソースが理解できるのは当り前だと思うが?
俺の中で、これが読めたら神っていうのは
VMだな、回りは読めてもハードシミュレートなんて暗号と言うか
まったく知らない言葉、読むもなにも何をしてるのかが理解できん
600 :
598:2005/06/13(月) 18:32:21
やっぱり
char tmp[0];
か、
さっきなんで違うと思ったんだろう
なんで7じゃいけないのかが判らん。
#いや、勿論8でもいいと思うが。
__attribute__((packed))をつけたら、
char[7]と同じという意味になるんじゃないのかと。
iccとvcのソース読んだことあるけど両方とも整然としてて読みやすかったよ。
あの高度な最適化がきれいなソースから生まれているのは明らか。
たいして面白くない事書いてるんだから
もうちょっと、面白可笑しい文面で書いたりはできないか?
>>603 えー、なんでじゃあ7で間違ってると思うんだ?
>>603 気になるからはよ答えれ。bus errorが出るようなCPUだと
8になるのかもしれないが、386じゃどう考えても7にしか思えないんだが。
A.「1+1が2だ」
B.「ほんとだ。なんで3じゃないんだ」
C.「おまえらアホか」
重要:Cは1+1が2であることを否定してない。
ちゃんと代入もできるぞ!
↓こんな感じで
buf.tmp[0] = 'w';
levelof(このスレ)=0
>>610 それってchar aの領域に書き込んでるんじゃなくて?
どうでもいいけど、アセンブルしてその結果について話合えよ。
レベルとかそんなの以前にバカすぎなんだよ。
>>611 バカ認定するまえに、ちゃんとした回答与えろよバーカ
この構造体の定義の仕方ってコンパイラによってはエラー返すよ。
規格書嫁
俺は規格書もってないからK&Rを読んだが
配列サイズ0のときは書いてなかった
俺役立たずwwwwwwwwww
>それってchar aの領域に書き込んでるんじゃなくて?
>どうでもいいけど、アセンブルしてその結果について話合えよ。
>レベルとかそんなの以前にバカすぎなんだよ。
バカで無い
>>612様が、↓次で詳細な解説します。
↑何もいえない知った蚊野郎の必死のレスの見本
GCCにおける要素数0の配列についてマジレスしていいの?
サイズ0の配列がどうコンパイルされるかに正解があるわけねーだろバカ
>>619 Cの言語仕様なんてしらねーもんwww
じゃあ説明してもらいましょうか。にげんじゃねーぞ禿
バカで無い
>>620様が、↓次で詳細な解説します。
info嫁
C Extensions -> Zero Length のところな。
>>596 7でいいと思うよ
tmp[0]は領域取られないですよ
ヒント:パツキン美女でもタルドルだとちょっとやだよね
>>622 詳細な説明なんてないっつってんだろバカ
マジレス。
長さ0の配列はGCC拡張だヴァーカ
$ gcc -O4 -Wall -pedantic foo.c
foo.c:5: warning: ISO C forbids zero-size array `tmp'
629 :
デフォルトの名無しさん:2005/06/13(月) 20:16:53
なんだか随分いびつながらも変なチームワーク出てきたなこのスレ
>>624 メンバの tmp[0] と a のポインタアドレス見たら同じだった。
alias みたいな物になるのかな? > tmp[0]
なんで
>>598が最初に答えてくれてんのに
こんなにあれたの?
アホなのか?
パツキン美女 (;´Д`)ハァハァ
levelof(このスレ)=-300
>>630 パツキン美女みたいなものです
TEL番ゲットしたのに「現在使われておりません」みたいな
実態が無い、幻の存在
他人をバカ呼ばわりするだけが生きがいの奴らが使うコンパイラ
それがGCC。GNUクオリティwww
>>636 答えになってるだろ?
そこを指定してるんだから
そこを触ってみて、どう動くかを実際に見たら
そのinfoがわかる
文を読んでも何の連想もできない
文字しか読めないひとなのか?
>>638 なんの後ろめたさもなくそんなレスしてんの?
>>638 そんな態度ばっかとってるから、幻のTEL番しかゲットできないんだよ
もう少し謙虚に生きれ
うんこーーー
おまえらうんこぉーーー!!
普通にヘッダのポインタにヘッダのデータ長を足し算する方が
ソース的にも分りやすい!
>>642 やっぱり、GCC の仕様は素晴らしいな。 GCCハカー カコイイ!
645 :
デフォルトの名無しさん:2005/06/13(月) 20:54:59
ソースをGPL汚染させるだけじゃ飽き足らずGNU C拡張汚染までさせる気か。
GNUってほんとやることが汚いよな。
でもGCCは2進数の存在を拒否しますよ
ICC最強
>>645 >GNU C拡張汚染
この謎の文章について
>>647 (゚д゚)ハァ?
GCC よりもまず日本語の勉強が必要かと。
時期gcc5.0では2進数どころか、N進数(まあおそらくアルファベットの
数に制限されそうだが・・・)の表記をサポートを致します。
なんちゃって
36進数は地味に便利なので良く使う
数字の桁を再帰的に表現できるなら何桁でもいけるな。
カッコで一つの桁を表す。
N1000_3(N10_980)(N8_50)
みたいに。なんのことだか分らんかww
進数表記の部分も任意のn進数で表現できた方がいいな。
最終的に10か16で表現されるところに落ち着けば、処理系が
解釈に困ることはないはず。多分。
64進数はよく使わない?
うーん、あんまし。
ゲームとか作ってると1024進数とかよく使うんだが、うは漏れだけwwwwwww
な希ガス。
36進とかは地味に使うね。
使うっつーか、使っちゃってるというか。
36って何?10+26でテキスト化とか?
英数62文字以外に何使う? Base64と一緒?
# 個人的にはBase64の文字の選定にはちと納得がいかない。
# -と_と.なら納得できたんだが。
>>657 0~9,A~Zまでで一桁
女神転生風のパスワード作成にお勧め
パスワードをさらにmd5sumに通して使ってる俺はアフォですか?
>>660 辞書攻撃に強くなるので悪くない。
だがスレ違いだ。
>>661 ぶっちゃけて固定小数点。
1000の近似値で2の10乗なので、精度的に手ごろで直感的でもあると。
少し前のゲーム機とかだと、ラジアンを4096(14ビット)で表して、
符合1ビット、回転数念のために1ビット、計16ビットで回転表現とかやってたけど、関係なさ杉。
10bit幅つーのはシフトするときに扱いにくくないか?
と思ったけど最近のCPUならあんまし関係ないか。
4096は14bitではなく12bit。
で、16進3桁で表せる点が(人間にとって)ほんの少し便利。
0x1000が4Kで、いろんなCPUで仮想記憶のページサイズだったり。
48進数というのは微妙に使い勝手が悪いことで有名
そういえばケンシロウ進数パッチのgcc版がsourceforgeにあったな
xeon用の最適化オプションてある?
-march=xeonとかさ。
XeonのアーキテクチャがIntelのどの系統なのかは知ってる?
いつも、
-std=c99
とやってる俺は軟弱者?
>>669 それなら、-pedantic とか -Werror も付けとけ。
-Wallはやってる
おまえらの普段使ってるオプションは?
-pipe
-酸素
C99ってANSI凖規なんだ
別の企画かと思ってたよ
C99とANSIの意味を教えて
ぐぐれ
ここで聞いてるんだから
ここで説明しろよボケ
>>677 どうせ暇なニートなんだから、自分で調べろよ。
おまえが調べてかけよボケ
働いててもそんくらいしか役に立ってないだろボケ
>>675 ANSIはアメリカの工業規格で、日本でいえばJISみたいな機関。
ここでC言語仕様の標準化作業を行っています。
言語の仕様なので、見直し作業が必要で、その改訂作業の年をとって、
仕様の名前を決めてるの。
つまり「C99」は、99年にANSIで標準化されたC言語の仕様なんだよ。
>>690 C99はANSIじゃなくていきなりISOで規格化されたよね。
ったく、この程度のことにもったい振りやがって…さっさと答えとけボケ
684 :
682:2005/06/16(木) 19:42:06
えぇ?
じゃあ、C05とかもあるの?
1番新しいのがC99ってこと?
686 :
685:2005/06/16(木) 20:19:40
マニュアル読んだら
1番新しいのがC99みたいですね
gnu99ってのもあるみたいですね
C99の前がC89みたいなので
10年毎に更新するのですか?
JISは5年に1回見直すけど見直しの結果は「承認/改訂/廃止」のいずれかで、
「承認」なら規定内容は変わらない。
ISOも同様なら10年に1回とは限らない。
C95があるね。文法的にはC89と同一で、ライブラリが追加されただけのはずだけど。
689 :
デフォルトの名無しさん:2005/06/16(木) 20:47:44
gccとg++の 違いを教えてください。
マジで。
man みろよ
ってか、g++のmanは空だったが
なんだこれ?
gccにはPascalのコンパイラはいってないの?
ここで聞いてるんだから
ここで説明しろよボケ
マンドクセ
入ってないだろ。
GNUのPascalはGPC。
よってスレ違い。
ったく、この程度のことにもったい振りやがって…さっさと答えとけボケ
森にお帰り。
このスレはボケばっかりだなボケども。
そーですね
gpcって一度gccに入りそうになったのにな。
なんでわけられてるの?
コンパイラ コレクションなんだから
いれたらいいのに
gpcがボーランド互換とか過激な方に走っているからじゃないかな。
fortranもobj-cもjavaも要らないよ。c/c++だけで十分。
それはお前の主観だろ
死ねよ
>>705 >fortranもobj-cもjavaも要らないよ。c/c++だけで十分。
これはたしかに君の主観だと思うよ
使う人がいるからあるんだし、それだと
ccとかc++
でいいじゃん、
ボケ、バカ、カスばっか
そーですね
意訳:
fortranもobj-cもjavaも使えないよ。c/c++覚えるだけで手一杯。
>>709 君は水商売に向いてるな。今度一緒に飲もうか。俺のおごりで
おまいら、そんなに全部入りなGCCが好きなのか。
今後際限なくコンパイラの種類が増える方向にあっても良いと?
バラバラで良いでしょって意見は確かに主観だが、全部入りで
良いでしょってのも間違いなく主観だ。もしかして気付いてない?
>>712 そんなことはGCCのチームに言ってくれ。
コレクションなんだから集めるのは当り前だろ
こいつらはgccがコンパイラだと思ってるのか?
gccじゃなくて、必要なコンパイラだけ入れようとは思わんのか?
おもわなんだったら文句いうなよ
>>714 コレクション ってのは後付け設定じゃん
そもそもgccはコンパイラだったんだよ
でもいろいろあってコンパイラ衆の親分になったもんで
語呂合わせでコレクションになったわけで
STVのSTはサンタのST って言ってんのと同レベルなんだよな
717 :
デフォルトの名無しさん:2005/06/18(土) 19:09:54
>>714 そうだね。
この際PascalやModula-3やD言語のコンパイラとライブラリ一式も入れるべきだ。
後付けだろうとなんだろうといまはそうなんだから
それに従えよ
文句をいうんだったら使わなきゃいいだけ
>>718 ガタガタ言ってんなよ
gcc様がfortranなんざコレクションに加えねぇってんだから
それに黙って従っとけ
Fortran入ってんじゃん…
Adaもかなり長い間別配布だったけど、安定して中に入ったよね。
gpcはまだまだ安定しそうにないし。ISO Pascalだけならもう大丈夫だけど。
D言語も入れてくれえええええええええっ
Pascalは方言著しいし、機能的にも既に配布に含まれるAdaという化け物言語が完全に上行ってしまってるしなあ…。
Borland拡張の是費もあるけれど、拡張が無ければ今更魅力も無いのも事実。
(C++が既にあるのに今更構文互換性すらないBCPLを入れようとしてるようなものでは…)
またDは本家のバージョンアップ攻勢を見るに言語仕様が安定するまでまだ数年はかかると思われ。
というわけでここはひとつ、OCaml希望。
Javaが入るくらいだから、
技術的にはLisp, Prolog, ML系も入れられるだろうけど、
GCはBoehm GCオンリーだね。コンサバGCじゃないとかなり大幅な改造。
考えてみれば、なんでそんな何でもかんでもGCCに固まっちまうんだろうな。
GxCでxにDでもPでも好きに入れればいいだろに。
コード生成、最適化の部分を共有したいからでしょ。
C#も仲間に入れてください。
727 :
デフォルトの名無しさん:2005/06/18(土) 23:48:31
>>727 落ちてないよ。gcc4のバッファーオーバーフロー保護関係です。
結局4てコード速くないんでしょ。なんかがっかり。
コンパイルが速いんじゃないっけ?
C言語で "-O" オプションで最適化する奴
何でお前等は "-O" に頼るんだ?
C言語ってのはコードを書く奴が工夫して速く動くコードを書くもんだろ?
コンパイラが速く動くバイナリを吐かないとかなじゃなくて
おまえらが速く動くコードを吐けよ
それがいやならお前が最適化コードをかけよ
それなら文句ないだろ
その最適化コードで実際に最適化したバイナリの速さがおまえの限界
所詮おまえはそんな程度
コード書くのやめてサラリーマンでもやってろ
ちょっと待て、大抵のプログラマーってサラリーマンじゃないのか・・・
プログラマーじゃない上にサラリーマンな俺は最下層か……
gcc4.1コンパイル速度が速くなった。
>>735 趣味でやってるならかなり、いいご身分だと思うんだけど...
>>731 おー、そうか。
ループ展開やら switch のテーブル化やら
関数呼び出しの委譲やら末尾再起最適化やら
お前は何から何まで全部手でやるんだな。
保守も全部お前がやれよ!
なに? このばか
人生がんばれな
>>740 喪前はコーディングをがんばれ。
人生は頑張らなくてよい。
がんばらなかったからこんなんになれたんだよ
人生がんばってたらプログラマなんてならなかった
それは言えてるな
>>731 -Oはコードチェックの為のオプション。
lint(とかその類)使ってれば必要無いけどな。
ハァ
また書き込みが少なくなってきたな
>>744見たいな馬鹿もいることだし荒してみようかな
なぜscanfを使うなと低能は言うのでしょうか?
>>747 scanfにはバッファオーバフローを防ぐ手段が無いからじゃないかな
よくわかんないけど
無い?どんな時?
GCCの4.0ってどうなのよ。
gcc4はバッファオーバーフロー検出してくれないの?
char buf[6]; scanf("%s", buf);
とかを実行した時
誰もコンパイル時の話をしてないだろ
実行時のことを考えろばか
入力のサイズチェックしないで行くとあふれるかもしれんだろ
しね
char buf[6]; scanf("%5s", buf);
分かってない人は答えなくていいです
プゲラッチョ
>>747 formatに必要の無いもんも書けてしまうとか、同じ理由でデバッグしづらいとか
改行をスペースと同じ扱いになるのも問題だと言うのも聞いたな。
まぁスレ違いだが
760 :
デフォルトの名無しさん:2005/06/25(土) 13:27:10
%5なら5文字しか取らないということも知らずに
scanf()は絶対にオーバーフロー防止手段がない!とか言ってた
自称「職業プログラマ」には笑った。
まさに学校で教えてもらった知識そのまま
学校行かなきゃ何も出来なかった、
自分で調べるということすら出来ないバカだけある
スレ違い
>>760 揚げ足取りっぽくなっちゃうけど
%5 は 6文字分のバッファが必要だよ
>>759 「formatに必要のないもん」って何ですか?
まぁスレ違いだが
763 :
デフォルトの名無しさん:2005/06/25(土) 13:48:39
大きなnopのフル時計
いまはもう動かない~♪
おGさんの時計
>>760 すれ違いだけどおまえの方が痛いかも
固定文字列の入力なんて無いだろ?
大体scanf使うときなんて、ユーザによって違う文字列をもらう
コードかいたことないのか?
問題なのは「意図しない状態でも」安全かどうかであって、
固定かどうかなど問題ではない。
scanfでも安全
GCCのレベルってここまで下がったんだ
>>767 %dに対してアルファベットを入力されたらどうしましょ。
gccってglibcとnewlibの他は何が使えるんだっけ?
>>769 返り値をチェックすればいいじゃん。0なら読めてないからどうにかする。
めんどくさ。
>>769 scanf の戻り値をみて失敗しているようなら
'\n' までgetchar でバッファをクリアすればよし
そういう、考えることは大事だな。
ある便利な関数ばかり使うと、エラー処理の仕方もわからないバカばっかりになるから
お前らC初心者スレ池よ
低能っぷりに合わせて懇切丁寧に教えてやっから
>>774 初心者は scanf を使いこなせないから
初心者スレはふさわしくないよ
scanf は使いこなすものではない
と言うのならここで続けて欲しい
バカがバカの言う「scanfとgotoは使うな」というバカ論を刷り込まれた結果がこれ。
単に、バカだから使い道がわからない、回避の方法も考え付かなかっただけのこと。
将来的には使うことがなくなったとしても、そのノウハウとか考え方は
必ず良い方向に蓄積されていく。
バカはバカの言うことを真に受けてますますバカになっただけ。
gotoは使うなとはいわないけど
極力使って欲しくないな
読みづらくなる
scanfは使って欲しいな
入力のチェックさえしたら何の問題もない
goto
エラー処理にこれほど威力を発揮するものはねえぞ
問答無用だし
いいよな問答無用って
語呂がいい
多重ループ抜けるときとかな。
もうエラーだってわかってんだから面倒なことをする必要ねえ
ダイレクトにすっ飛ばすほうがラク
それでも最初はgotoに対して言い訳コメントかいてたもんだ
gotoアレルギーある奴がいたから
/* これこれこういう理由でgoto */
ロートルC厨って他にやることがないのか新しいことを覚えるのが億劫なのか知らんけど
こういう不毛でワンパターンなやり取りが大好きだよな。
最初ッから楽をしてはいかんのですよ!!!!!!!!!!!!!!!!!!
危険なものとして認識しているのなら、いくらでも使っていい。
(仕事は別)
危険だとわかっていれば、「どういうときに使えばいいのか」ということを考える。
そうしていくと、「どういうときに使えば安全かつ便利か?」ということがわかってくる。
そうすりゃしめたもの。
てか初心者スレかここは。
>>785 私はどう危険なのか(危険じゃないのか)知りたいの
問題を回避する方法があるなら
それは(語弊あるけど)問題じゃない
(仕事は別)な理由を知りたい
この手の論争って
>>785みたいのが
要点をぼかしちゃうからだめなんだ
分かるならちゃんと書いてクレヨン
その後に(scanfが本当に危険だと分かれば)
>危険だとわかっていれば
の方へ進むんだから
787 :
786:2005/06/26(日) 00:04:00
連続でこめん
gets なんかはプログラマがいくらがんばっても
バッファオーバーフローの可能性がある
scanf にはプログラマがいくらがんばっても
解決できない問題があるか知りたいってことね
ない
仕事の場合は、完全に回避方法がわかっていない限り使うべきではない。
テストの場ではないのだから。
>>786 > gets なんかはプログラマがいくらがんばっても
> バッファオーバーフローの可能性がある
そんなことはない。
( ´д)ヒソ(´д`)ヒソ(д` )
system関数でシェル呼び出してバッファサイズを自前で制御してやるとか?
別の問題がありそうな。
まあfgetsでとってきてsscanfが一番安全だと思うけど。
> (仕事は別)な理由を知りたい
ヒント:まともなのはおまえだけ。他は全員無能。
794 :
デフォルトの名無しさん:2005/06/26(日) 01:14:20
でたw
一番アホなやり方ww
バッファが溢れた場合誤動作してしまう最悪なコーディングwww
バカ丸出しwwww
ソフトウェア開発技術者持ちだけど、何か質問ある?
仕様書ってどれくらい詳しく書けばいいんですか?
>>794 fgets()で取り込んだ場合は、strchr()で'も使って\n'が取り込まれてるかチェックすれば良いだけだけど。
ああ、別に buf[strlen(buf) - 1] != '\n' でもいいよ。
>>796 プロジェクトにもよるし相手にもよる。
たとえば、ここでこの変数に何を代入して・・・みたいなのをいちいちエンドユーザーさんに見せないでしょ。
機能の概要をしっかり書くことが大事。
'\n'付けてくれるんだったっけ?
ダセーw
バッファ溢れの対策した事無いのバレバレww
標準ライブラリすら把握してないそのアホッぷりwww
恥の上塗り恥ずかしすぎーwwww
>>798 そう。
取り込んだ文字列をそのまま使うならそのへんは意識する必要アリ。
atoi()やatof()で変換する分には'\n'は無視されるから問題なし。
全部取り込みたかったらgetchar()でヒープ領域に取りこみながら
realloc()してもいいけど、あんまり美しくない罠。
まあCに限定しなければ大体これでやってるけどな。
std::string str;
std::getline(cin, str);
776 名前: デフォルトの名無しさん [sage] 投稿日: 2005/06/25(土) 23:25:03
バカがバカの言う「scanfとgotoは使うな」というバカ論を刷り込まれた結果がこれ。
単に、バカだから使い道がわからない、回避の方法も考え付かなかっただけのこと。
将来的には使うことがなくなったとしても、そのノウハウとか考え方は
必ず良い方向に蓄積されていく。
バカはバカの言うことを真に受けてますますバカになっただけ。
>>800 ちょっとまった
\nつけてくれないパターンもありょ
>>802 ごめん、EOFの場合もあったね。
暫く叩いてなかったから忘れてた。
Windowsでなら、キーイベントクラックしてキー入力を捨てて警告音鳴らすようなインターフェイスとか
よく採用するけど標準関数でバッファを制御する方法って無かったよね
atoi()やatof()に数字でないものを渡すと何が起きるか分からないんじゃなかったっけ
未定義かどうか判断するのに
処理系がどういう実装してるか引用したって何の意味もないだろ
見るならJIS X 3010とかにすれ
ってここはgccスレだから
gccが別途振る舞いを保証していれば何の問題もないのか
規格も究極的には無意味だしね。
規格よりも(将来規格に取り込まれる)共通の独自拡張が先行してる例もあるし、
C++なら満たしてないやつのほうがむしろ多い。
ちゃんと依存だと割り切って使うならalloca()だろうとsystem("stty -echo")だろうと使っていいと思うよ。
経験則的に、機種依存だからといってOSのAPIを叩くのを嫌い、ANSI関数・コンソールアプリだけに
拘る奴は結局何も高度なアプリケーションが書けなかったりする。
MFCだろうがGtk+だろうがSwingだろうが用意されたライブラリを軽々操れる香具師のほうが
順応性が高い。
どうでもいいが
atoiをアトイ
atofをアトフ
とか言う奴を見るとすげえムカつく
なんてよむの
ってかスレ違いだから移動よろ
まあstrtol/strtoul/strtodだな。strtollとか。
ここは偉そうに語ってるくせにまともに標準入力から読み込むコードすら書けないアフォのすくつですね
別に標準入力から読み込む必要ないし。エディトコントロールからだし。
書いてみて
char buf[256];
printf("イレテミロ(255モジイナイ)"); gets(buf);
ひらがなを200文字入れたらバグりました
ワロチ
エンコーディングをMSX-JPにすればひらがな200文字入るよ
819 :
デフォルトの名無しさん:2005/06/26(日) 19:28:43
char buf[256];
printf("イレテミロ(255モジイナイ)"); fgets(buf, sizeof(buf), stdin);
何の対策もしていないscanfのバツファオーバーランを目に見える形で表したいのですが
なんかいい方法ありませんか。
明らかにオーバーさせても大概何事も無かったかのように処理が進むじゃないですか
そもそもオーバーフロー対策にいちいち標準関数なんて使うなよ。
画面入力だけに限定するならそれこそキーイベント破棄すりゃいいだけだろ。
たとえば数値の入力時に非数字の文字を破棄するようにしたほうがエンドユーザーには優しいわけだし。
リモートシステムは知らない。Webベースのフォームでも書くね、俺なら。
そーいえばなんでscanfつかっちゃまずいんだっけ
ストールマンといえどもバッファオーバーフローが避けられないから。
だよもん
コーヒーライター
おまえらキーイベントキーイベントいうけど
GCCでGUIアプリ作ってるのか?
もちろんWindows用はVisual C++で作ってます。
GTK+も似たようなもんだよ。
本当にいたんだ
自分はコマンドラインアプリしか作ったことないや
Windowsではコードかいたことはない
バカがバカの言う「scanfとgotoは使うな」というバカ論を刷り込まれた結果がこれ。
単に、バカだから使い道がわからない、回避の方法も考え付かなかっただけのこと。
将来的には使うことがなくなったとしても、そのノウハウとか考え方は
必ず良い方向に蓄積されていく。
バカはバカの言うことを真に受けてますますバカになっただけ。
後藤は使うがscanfは使わないな。
>>演算子くらいならたまに使う。
結局誰も完璧に回避できるコードを指さないわけだが
Emacsのコードでscanfのコード見てみ
神共でも この程度の回避方法しかしてないんだぞ?
馬鹿は「scanfとgotoは使うな」を使うなとか言うかもしれないが
もっと馬鹿はそいつらをばかにしてるのにまともなコードをかけず
まともな回避方法をしないままそれらを使う
オレは・・・scanfは使わないし・・・使おうとも思わないが・・・
もし、もしも 「scanfを使わなければ殺スッ!」 と言われたなら・・・
使わない
Emacsのeeの部分見たけど
対策と言う対策はほとんどしてないね
840 :
834:2005/06/26(日) 23:11:04
>>836 この程度とはいったけど
これ以上の方法が俺には思い付くとはいっとらんが?
俺は極力scanfは使うなって言う人だからな
>>837 ごめん
scanfを使ってる部分のコード見てみ
の間違い
そのうち世界中のブラウザの穴がふさがってきてネタの尽きてきたSecuniaあたりが
セキュリティホールをデッチあげてくれますよ
全部読むのメンドイから誰かfgetsでもおきうるオーバーフロー問題とやらを1から解説してみてくれ
>fgetsでもおきうるオーバーフロー問題
急にどうした?
だから、「getsは使うなfgets使え」はさんざん聞かされてきたが、ここ見るとどうやらfgetsも安全じゃないらしいが。
お前等すれ違い
Cのスレに行け
回避という姿勢が既にバッドノウハウですよ。
結局、fgetsなら問題ない、でFAだろ。
794 名前:デフォルトの名無しさん[] 投稿日:2005/06/26(日) 01:14:20
でたw
一番アホなやり方ww
バッファが溢れた場合誤動作してしまう最悪なコーディングwww
バカ丸出しwwww
↑こいつはキチガイということでFA?
スレ嫁よキチガイ
fgetsは溢れた分を読み捨てるにしてもスルーして次にまわすにしても
誤動作の原因になることが多いし
Cではそういう無自覚orいいかげんなコーディングがとても多いな。
>>854 fgetsは問題ないと言う例を
1-3行程度でキボン
>>854 char buf[3];
printf("a="); fgets(buf, sizeof(buf), stdin);
int a = atoi(buf);
printf("b="); fgets(buf, sizeof(buf), stdin);
int b = atoi(buf);
printf("a+b=%d\n", a+b);
例としてはこんな感じ。a=で1234と入れると誤動作する。
この手のコードは実際よく見かける。
buf[128]で行読み込むコードとかね。
>>856 1-3行程度で言って下さいって文句いわれるから
俺が書き直しといてやる
char buf[3]; printf("a="); fgets(buf, sizeof(buf), stdin);
int a = atoi(buf); printf("b="); fgets(buf, sizeof(buf), stdin);
int b = atoi(buf); printf("a+b=%d\n", a+b);
858 :
854:2005/06/27(月) 11:26:34
>>855 必要?ネタ?ちょっとワカランので保留
>>856 ありがと
なるほど確かに多いな。俺はそんなコードは書かないが
scanf の方がよっぽど安心だ
>>857 ありがと
何文字までなら正常な動作をするかっては仕様の範疇ですよ。
脆弱性は潰し解いた方がいいけどね。
ソース中にばら撒いてあるマジックナンバーを仕様とは言わないだろ。
誤動作=脆弱性でもないし。
このなあなあな文化がCクオリティ。
仕様に書かれていないのに10000文字突っ込んだら誤動作するようなソフトは
ベンダーに文句言って対応させるのが普通。
(まぁ仕様書に「一行は127文字まで」とか追記されるだけな場合が多いけどな)
862 :
デフォルトの名無しさん:2005/06/28(火) 01:05:14
scanfにしても、「ラインバッファであること」なんてどこにも一言も書かれてないのに
なぜかUNIX時代からラインバッファ
UNIXがラインバッファ方式だったからか
大抵のソフトは2Gもつっこみゃ死ぬと思うがな。
そりゃCのメモリ管理がうんこちゃんだからだろ
>>863-864 何の根拠も無いあなたたちの価値観で世の中のソフトを
貶めるのは止めてください。
違うだろ
こいつらが技術がないだけ
Cで書かれたアプリは信頼性が低く無用な制限があり
セキュリティーホール突かれまくりの誤動作しまくりってことでFA?
PerlもRubyもCでかかれているわけだが
std::string str;
std::getline(std::cin, str);
これでなんか問題ある?
gccじゃなくてGCC(GNU Compiler Collection)のほうなのでC++もありでしょ
標準Cライブラリが脆弱なだけだろ。
getsやsprintfなんて残しておくのが悪い。
脆弱な例として、getsはともかくsprintfて。
使い方を間違えてるだけじゃん。
配列のサイズチェックを行わない言語仕様に脆弱性がある、
と言っているようなもの。
まあ、神々がコードで使ってるのは大抵snprintfだな。
別に移植性のないsnprintfなぞ使わなくても、
個々のフィールドのサイズを制限するだけで充分な場合がほとんどだが。
sprintf(buff, "%.1000s", str);
を、わざわざ
snprintf(buff, 1024, "%s", str);
にしなければいけない理由は全く無い。
で、snprintfを使わざるを得ない場合というのは、
バッファを拡張しながらsprintfを使いたい場合だな。
ヒープに確保したバッファに入りきらないサイズだと判明したら
バッファを広げてもう一度実行するような。
>876はフィールド幅が可変だということを認識していないんだろうか。
何のことだろう?
まさか%.*のことでもあるまいし。
それ以上に873の意味がどうしてもわからないけど。
俺にはわからないことばかりだよ。
>>878 sprintf()で生成できることが保証されているのは1024まで。
誰が保証してくれてんの?
で、フィールド幅可変というのは、やっぱり、どう考えても
%*を知らないとしか思えない。
あるいは、フォーマット文字列にリテラルしか使えないと思っているとか。
万が一↑の通りなら
バカじゃねーのって感じ。
gcc関係ないじゃん!
sprintf(3)に長さの制限なんてないけど、
gccにsprintf(3)は含まれてないしね。
snscanfがほしいんですが
で、
>>885(=いっぱい)じゃ、
「スレ違いなので移動しろ」という
最初の指示をどうして行動でしめてくれないのでしょうか。
何で俺だけ?
他の人がGCCと関係ないscanfやgotoやfgetsの話をしていても
俺は全然書き込まなかったし、その間スレ違いとの指摘も無く
その流れでsprintfの話題が出たから加わったんだよ。
それも、無知に「おまえは無知だよ」といってるだけだから。
スレ違いとの指摘が
>>883だとしても
移動しろなんて言われてないよ。少なくとも俺は。
まあ、無知な人はちゃんと反論出来ないらしいし、もうやめるけど。
脆弱で誤動作するコードを書き散らしている人間の大半はgccユーザー
他の人がやってれば俺はやってもいい
わがまま世代の骨頂だな
釣りにしても、フナ釣りのエサが干物じゃ食いつかんよ
とりあえず、おまえら全員だまれな
はぃはぁ~~~~~ぃ
スレ違いだからねぇ~~~~~~~
ス・レ・ち・が・ぃ !!
>>892 ほら、最後に自分が書かない時が済まない。
だからうざがられるのに。
スレ違いと指摘するのは、
スレ違いの話をやめさせるためではなく
わざと煽って、よりスレ違いな話題にもっていくため。
>>889>>892より。
>>883 libjava, libstdc++はgccに入っているのに、glibcは入らないのな。
libstdc++って将来的にはlibcに依存しない形になるの?
libstdc++/libioなんかみると、そういう傾向はあるけど、
全面的に抱えることはないんじゃない?
コンパイルの際にスタティックリンクでコンパイルするにはどのオプションをしているればよいのでしょうか?
>>900 マニュアルは読みましたか? そのまんまのオプションがありますよ。
プラットフォームによっては、どうしてもスタティックリンクできない
ものもあるけどね。
MicroSoft社のコンパイラにある /Zpオプションのようなものはないのでしょうか?
906 :
903:2005/07/02(土) 22:24:42
>>906 謎。
>>903 はあるともないとも書いてなくて、単に情報源を示しただけなのにな。
ちなみに
/Zp[n] pack structs on n-byte boundary
だそーだ。
俺は
>>902が/Zpオプションが何か分かってない可能性ありと見たぞ!
struct foo foo __attribute__ ((aligned (4));
コンパイラオプションで一括定義。
ソース中の変数宣言してる個所で逐一指定。
一見するとコンパイラオプションは便利なようだけど、
これってオプションによって動いたり動かなかったりする
ソースが出来上がるってことでしょ?マクロで対応する方が
正しいよね。
ところで
>>902はあるのかないのか聞いてるんだから
「ない」と一言言えばいいんじゃないの?
これかな?
-Fpack-struct[=n]
他にも-falign-XXX=n ってのがいくつかあるけど
>>909は型の属性と変数の属性をごっちゃにしてない?
それはfooという変数を4byte境界に配置するっていうだけで、
struct fooについてはなんの指定にもならないはずだけど。
structの定義のところで各メンバにaligned()を入れるんだっけ?
>>909,913-915
なんで aligned の話になってるんだよ。
"pack structs on n-byte boundar" なら packed だろ。
YOYOYOYO
藤井ブラボー
あ あのブラボーじゃなくてブラザーなんですけど
ブゥラボーって習ったんだよ
あっあっブラボーですブラボー
それはよしとして、GCCはコンパイルコンパイラネームを隠すことは絶対に出来ないのか?
GCCである以上、誰かが作ればできるだろ?
商用でしかできないとかいってるアホもおるけん。。。。
>>917 コンパイラネームってどこに載ってるんだっけ
ちょっとお姉さんに教えなさい
コンパイリンガーなんですけど、
intなどの大きさは機種に依存しますが、どのマシンでも、32ビットの整数になるような型を使いたいのですがどうしたらよいのでしょうか?
>>921 c99だったら
#include <stdint.h>
gcc2.95.4 だとワーニングだけどコンパイル通って、gcc4.1 だとエラーになる
様なのがいくつか有るんですが、何かオプション等で以前のバージョンの様に
振舞わせて互換性を保つことは出来ないでしょうか。
>>923 ウォーニングもエラーも取ってコンパイルすればすべて解決
>>923 モノによってはあるが、ソースを変える以外に方法がないのもある。
なんでバージョン変えてんのに以前のものがいいって
わがまま言ってんの??
boostは標準では使えないのでしょうか?別途インストールをしないといけないのでしょうか?
>>927 そんなことよりgcc4.0.0にはまだ正式には対応していない。
export 実装キボンヌ
大昔
ワーニングってのはバグがあるけど文法としては間違ってないってことだから
そのまんまで出すと必ずセキュリチーに問題が出る
だからワーニングあるソースは認めない
といわれました
933 :
デフォルトの名無しさん:2005/07/07(木) 06:28:10
経過時間を計測したいのですが、プロセッサ時間依存の方法ですと、マルチスレッドのプログラムの
経過時間がうまく計測できません。clock()以外で、ミリ秒まで取得する方法を教えてください。
スレ違い
935 :
デフォルトの名無しさん:2005/07/07(木) 18:54:33
そこでQueryPerformanceCounter()ですよ
ChangeLog にどこかの団体や国に対して排斥するような思想的なこと
書いたらだめだよっておかあさんが言ってた。
gccってどうしてこんなに最適化が弱いの?
開発者の頭が弱いから?
>>939 gccの最適化をあてにすることよりも、まず自分のアルゴリズムを見直してみたら?
その方がずっと前向きですよ。
最適化が弱いってほかのコンパイラの最適化の結果と
逆アセンブルして比べたってこと?
弱いところが或のなら、報告してみるなり
自分で修正してパッチ送るなりしてみては?
>>939 違う。gccはあらゆるCPUをターゲットにコアが書かれているから、x86に
特化した最適化はしにくいと、gccのメインチーフがインタビューで言って
いたぞ。
URLは失念したが、まだ残ってるはず。
URLを失念したの?
お前らもなんか仕込んでこいよ。やられっぱなしだから舐められるんだよ。
舐められたんだったらくわえてやれよ
むしろ、こんな思想を煽っている黒幕が誰なのかに興味があるな。
948 :
黒幕:2005/07/08(金) 16:27:13
なにかごようでござるか?
949 :
デフォルトの名無しさん:2005/07/08(金) 19:13:28
GCC 4.0.1 Released!
>>937 それもカーネルによってはマルチスレッドでの測定がうまくいかない罠
ここは、私がガオガイガーの名にかけて死守する!
ガオガイガーなら GGG じゃないの?
んじゃガオカイカー
954 :
デフォルトの名無しさん:2005/07/10(日) 16:01:24
>>944 ChangeLogそのものはどこで読めますか?
955 :
デフォルトの名無しさん:2005/07/10(日) 16:32:09
バブルで浮かれてるんだろうな。日本人もバブルの頃は相当痛々しかったに違いない。
gcc-x.y.3から安定
トライXで万全
逆光は勝利
世界征服の第一歩は練馬から
日中韓がいがみあえば得する国があるんでしょう。
世界征服セーラー服
964 :
デフォルトの名無しさん:2005/07/10(日) 22:23:42
チョン氏ね
965 :
デフォルトの名無しさん:2005/07/11(月) 00:28:05
FedoraCore4(=GCCの4.0.0)をつかってるんですが、プログラムがロードされる
アドレスのランダム化を切るにはどうしたらいいんでしょうか?
gcc -fno-PIE -fno-pie は効きませんですた。
execstack -s a.out もダメ。。。
>>961,963
日中韓が仲良くなりすぎると面白くないと感じる国がいるのも事実。
ヒント: *
>>966 例えそうだとしても中韓の実態があからさまになった以上
関係修復は世代が変わるまでは無理だよ
>>967 世代が変わっても、アイツらが変わらない限り無理。
臭いスレだな
970 :
デフォルトの名無しさん:2005/07/11(月) 22:48:57
>>970 領海に潜水艦突入
EEZで密漁->逃走->国際法を無視して政府が匿う
これらはアとか台の思惑に関係ない
仲良くできるか?
>>971 領海に入った奴や匿う政府とは仲良くできないかもしれないが
それ以外の奴らとは会ってみなければ分からない
とりあえず GCC について意見を言ってみた
チベットでもGCCが使う自由があるかどうかそれが問題だ
おぃおぃ、無駄話ばっかりしてるとスレが埋まっちゃいますよ。
975 :
デフォルトの名無しさん:2005/07/12(火) 02:59:07
なんで
int main(short argc, char **argv)
これだと
warning: first argument of `main' should be `int'
って文句いわれるわけ?
引数の数なんてcharでも十分でしょ
真面目な理由知ってるひといる?
>975
intとshortでは、異なる結果になりうるから。
例えばスタックがshortと同じ幅の場合、スタック操作の段階で誤動作する。
>>976 違う型ですから。
それからANSI以前のCでは、
charやshortでもintにpromotionされて扱う事が約束されたが、
ANSI Cからは、結果が同じなら実際にはshortで渡す処理系も許容。
つまり定義と宣言に食い違いがあるとまずい処理系が許容されている。
978 :
976:2005/07/12(火) 12:11:26
ワラ
980 :
デフォルトの名無しさん:2005/07/12(火) 15:16:32
「つぎスレ」じゃないんだ。
じと書いてつぎと読むのは2chの常識
じゃあ残りはドルアーガのたから箱の出し方について話し合おうか
25階は何が出るんですか?
えーと・・・25階ってなんだっけ
NESでフルコンプするmovieあったよ
おれはソロモンの鍵の方が好きだが