GCCについて part5

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
史上最強のツール、GCC(GNU Compiler Collection)について語るスレ。

GNU本家のGCCページ
http://gcc.gnu.org/

Binutils - Collection of binary utilities
http://www.gnu.org/directory/GNU/binutils.html

GNU Binutils
http://sources.redhat.com/binutils/

GCC online documentation
http://gcc.gnu.org/onlinedocs/

Installing GCC
http://gcc.gnu.org/install/

GCC Timeline
http://gcc.gnu.org/releases.html#timeline

Calendar
http://gcc.gnu.org/develop.html#timeline
21:04/12/15 05:49:28
前スレ
・GCCについて part4
http://pc5.2ch.net/test/read.cgi/tech/1090062751/
・GCCについて part3
http://pc5.2ch.net/test/read.cgi/tech/1072484422/
・GCCについて part2
http://pc2.2ch.net/test/read.cgi/tech/1046179115/
・GCCについて(過去ログ倉庫)
http://pc2.2ch.net/tech/kako/1007/10077/1007731543.html

関連スレ
・cygwin + mingwn + gcc 相談室
http://pc5.2ch.net/test/read.cgi/tech/1058134693/
・gcjって使ってる人います?
http://pc5.2ch.net/test/read.cgi/tech/1046627795/
3デフォルトの名無しさん:04/12/15 07:09:02
         (
      ____)__
     ,. ´     `  ` 、
   ./        _   _ \
  /        _   ̄  _ ヽ
  /イィィ,,.,.,.,.,.,      ̄ ̄    !
 f/ノノノノノノノ  ヘ.__ j  jノ__ノ
 |///////   _ (__ ゚_>` __( ゚_イ
 .!|.|i/_^ヽ|_'___r⌒ y'  ヽ^)|
  !|| fニ> ::::::  `ー'゙ (_`___)ノ
   ヽ.ニ` :     /_ノ/川! /  やりおった・・・
    __ノ 、    / ヾ---'´ ノ
 __ノ \l `   ____,/
       \    ノ リ.|`ー--
        \   .//
4デフォルトの名無しさん:04/12/16 01:53:50
糞コンパイラ
-O1は特に酷い
手書きアセンブラのほうがマシっす
5デフォルトの名無しさん:04/12/16 05:15:33
>>4
Cってのは、速度が気になるコードを書きたいのならコンパイラがどんなコードを出すのかを
理解しながら書かなければならない言語だが?
その限りにおいて、GCCはそれ程ひどいコードを出してこないし、手書きアセンブリよりは
はるかに楽だが。
6デフォルトの名無しさん:04/12/16 17:56:11


まだ4.0試してネーヤ
7デフォルトの名無しさん:04/12/17 22:23:09
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
>>1
立てなくてもいいのに・・・
10デフォルトの名無しさん:04/12/19 13:18:49
現在ベストオブgcc versionは、3.3らしい。
11デフォルトの名無しさん:04/12/19 13:35:49
3.3.3最強
12デフォルトの名無しさん:04/12/19 13:51:44
このテンプレを忘れてる。アリさん

GCC Bugzilla
http://gcc.gnu.org/bugzilla/
13デフォルトの名無しさん:04/12/19 14:00:47
gccの最適化不足をまとめてるページ

Deficiencies of GCC's optimizer
http://www.gnu.org/software/gcc/projects/optimize.html
14デフォルトの名無しさん:04/12/19 14:12:03
[gccトリビア]
gcc4.0でブランチしたのは、



3.4に存在したバグが相当あったために4.0としてブランチした。
15デフォルトの名無しさん:04/12/19 14:45:18
gccにgpcが統合されるの?
今さらpascalなんてイラネ
16デフォルトの名無しさん:04/12/20 03:58:31
ここだけの話、ディストロやOSにもよるが
gcc3.4系は早々とgcc4.0系に切替えていくんじゃないかという噂がある。
17デフォルトの名無しさん:04/12/20 18:18:09
試しにgcc4.0でFirefoxビルドしてみたら体感速度上がった。プラグイン全て使えなくなったけどなorz
18デフォルトの名無しさん:04/12/20 18:49:12
gcc4.0って3.4からまたABI変わっちゃったの?
19デフォルトの名無しさん:04/12/20 19:48:12
あび
20デフォルトの名無しさん:04/12/20 22:18:44
あのさ、amd64環境でさgcc4.0にしてコンパイルしたらさ
error: cast from ‘void *’ to ‘int’ loses precision
っていうエラーが出まくるようになった。
このエラーは3.3系で出なかったけど型の制限がより厳しくなったってこと?
21デフォルトの名無しさん:04/12/20 22:58:48
>>17
プラグインを入れ直せばいいのでは?
22デフォルトの名無しさん:04/12/20 23:18:12
>>20
void * が 64bit で、int が 32bit だからでしょ・・・。
23デフォルトの名無しさん:04/12/21 00:10:25
ポインタとintが同サイズと仮定したコードキター!!!
2420:04/12/21 00:40:01
>>22
実はそのアプリってFirefox1.0です。orz

>>23
あなたのそばにも依存したアプリが....。
25デフォルトの名無しさん:04/12/21 02:57:39
一般にAlpha/AXP がまだ現役だったころ開発・メンテされてたコードだとLP64 に結構対応してるのが多いし、
その後IA32野郎が壊したところもすぐ直るものなんだけど、Firefoxのコードは新し目のコード多いのかなぁ・・・
26デフォルトの名無しさん:04/12/21 04:51:54
げっ!パフォーマンスチェックしたら、
gcc 4.0がgcc 3.3.3に負けた。orz

っていうか、まだリリースされてないか4.0って(笑
改善の余地有りってことかな。
27デフォルトの名無しさん:04/12/21 04:55:15
gcc 3.3.3が最強ってことでFA?
28デフォルトの名無しさん:04/12/21 05:34:49
gcc 3.3最強
2920:04/12/21 07:21:25
Firefoxのソースはgccっていうか、g++なんだけど。
Quick hackしようとおもって途中までやってたんだが次から次へと依存したコードが...。

⊂⌒~⊃。Д。)⊃  依存したコードありすぎて終わらね〜〜よ!!やめたー!
30デフォルトの名無しさん:04/12/22 12:58:07
binutils 2.15.94.0.2 出た
31デフォルトの名無しさん:04/12/22 16:40:45
>>29
どのへんかちょろっと教えてクリ
32デフォルトの名無しさん:04/12/22 19:56:52
gcc4.0は、まだバギーみたいだね。
33デフォルトの名無しさん:04/12/22 21:36:11
単純にvoid *をintに代入する、なんて糞コードが
修正されずに残ってるものなのかな。

もしかしたらptrdiff_t相当の、ポインタの差ををintに代入してるのかも
と思ったけど、だったら出るエラーメッセージが違うだろうし。
34デフォルトの名無しさん:04/12/22 22:01:46
gfortran4.0でfortran90用に書かれたソースが無条件でとおるようになった。
姫野ベンチを試したら、5%くらい遅いね。(Opteron1.6GHzで498Mflops(gfortran4.0)と526Mflops(g77))
またSECNDS()がなくなった。
35デフォルトの名無しさん:04/12/22 22:05:09
でもさ、mozillaプロジェクトのコーディング規約って、
移植性最優先なんじゃなかったかなあ。
firefoxって別なのか?
36デフォルトの名無しさん:04/12/23 10:47:08
>>33
AMD64上でgcc4.0を使用して、Firefoxをコンパイルすればわかる。
37デフォルトの名無しさん:04/12/23 10:55:08
gcc 4.0来春登場 - 互換性・速度に課題も
http://pcweb.mycom.co.jp/articles/2004/12/22/gcc/
38デフォルトの名無しさん:04/12/23 10:56:46
gccは宇宙史上最大のツール
39デフォルトの名無しさん:04/12/23 11:07:48
4.0上で>>20のエラーは"Mudflap"て機能が働いてるって事?
40デフォルトの名無しさん:04/12/23 11:16:12
> また「完全な内部形式のTree Dumpを取りたい」という意見については、
> 小島氏は「実はこれはRMSの方針で「完全なダンプは出さないようにすること」
> ということになっている」との事実を明らかにした。これは「完全なダンプを
> 出力可能にすると、ProprietaryなBackend Pathを作られてしまう可能性がある」
> という理由からだと言うのだが、一方で開発者にとって完全なダンプが取れる
> ことが非常に魅力的であるという事情もあることから、事前に何らかの文書等を
> 交わしたユーザに限り完全なダンプの出力機能を利用可能にするといったことが
> できないか現在検討が行われている、と同氏は語った。
41デフォルトの名無しさん:04/12/23 11:23:13
>>40
その行動は微妙だな。
42デフォルトの名無しさん:04/12/23 11:29:22
自分で手を入れて吐かせりゃいいんだけどな。
以前gcc依存バリバリのコードを処理する必要があるときにそうした。
43デフォルトの名無しさん:04/12/23 11:34:39
>>42
オープンソースなのでやるだけ無駄だということですね。確かに。
44デフォルトの名無しさん:04/12/23 14:21:44
吐く所だけGPLにすりゃいいだけだもんな。
敵に塩を送らないってだけの話だな。
45デフォルトの名無しさん:04/12/23 14:31:07
Build status for GCC 3.4
http://gcc.gnu.org/gcc-3.4/buildstat.html

Build status for GCC 3.3
http://gcc.gnu.org/gcc-3.3/buildstat.html


3.3.5でshやsh4はまだなのかぁ..。
46デフォルトの名無しさん:04/12/24 20:46:00
age
47デフォルトの名無しさん:04/12/24 23:16:14
>>37
casts-as-lvalue って何で騒がれてるの?
Linux界でだけ?
48デフォルトの名無しさん:04/12/24 23:32:46
大体cast-as-lvalueがどういう意味なのかも知らん。
49デフォルトの名無しさん:04/12/24 23:41:49
cast as lvalue は大昔からのGNU拡張でわ?

たいていは回りくどい書き方に修正すればANSI互換に書き直せるハズ。
50デフォルトの名無しさん:04/12/24 23:45:37
>>47
普通の C / C++ で *(int*)&d = 1; とか書くところを、gcc では今まで (int) d = 1; と書けてた(んだと思う)。
簡易unionみたいなもの。さほど意味の無い変な拡張だけど、使ってる人もいたんだね・・・
51デフォルトの名無しさん:04/12/24 23:51:01
gccを導入したいんですがどこからどうしたらいいのかわからないので
詳しく説明してあるページとかあったら教えてください、日本語で
52デフォルトの名無しさん:04/12/24 23:55:55
ホスト(コンパイラを走らせる環境)は何だよ?
53デフォルトの名無しさん:04/12/25 00:18:15
windowsなんですがうごきますか?
54デフォルトの名無しさん:04/12/25 00:23:17
>>53
cygwin mingw SFU(interix) coLinux どれか選べ
55デフォルトの名無しさん:04/12/25 00:23:23
cygwinなりmingwなりで検索しる
5653:04/12/25 00:26:16
ラジャ
57デフォルトの名無しさん:04/12/25 01:01:32
>>50
なるほど。
58デフォルトの名無しさん:04/12/28 18:36:28
cygwinについてるgcc用のSTLのrandom_shuffleって壊れてませんか?
全然シャッフルしてくれないんですけど?(最後の要素が先頭に移動するだけ)
同じコードをVC++7.1で動かしたらちゃんとシャッフルしてくれました。
59デフォルトの名無しさん:04/12/28 21:52:32
60デフォルトの名無しさん:04/12/30 14:34:19
質問させてください。
Adaを含めてMinGW-BSDクロスコンパイラを作りたい場合、どうconfigureすればいいですか?
61デフォルトの名無しさん:04/12/30 22:15:55
>>59
それでうまくいきました。どうもありがとう。
しかし…なぜデフォルトでちゃんとシャッフルしてくれないのだろうか…。
(clでは第3引数なくてもちゃんとシャッフルしてくれました。)
62デフォルトの名無しさん:04/12/30 23:26:24
cygwin の lrand48 が悪いらしい。
63デフォルトの名無しさん:05/01/02 16:26:23
#include <stdio.h>

int main()
{
printf("abc");
}
という内容のファイルをコンパイルするとヘッダファイルがないといわれるんだけど何故?
64デフォルトの名無しさん:05/01/02 16:28:41
>>63
ヘッダファイルがないから。
ちがうか?
65デフォルトの名無しさん:05/01/02 16:34:07
includeパス間違い。ユーザ マニュアル見て設定しる
66デフォルトの名無しさん:05/01/03 13:00:30
>>60
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14626
俺にはドキュメントからは見つけられなかった
67デフォルトの名無しさん:05/01/04 17:19:30
>>39
> 4.0上で>>20のエラーは"Mudflap"て機能が働いてるって事?
違うよ
68デフォルトの名無しさん:05/01/06 04:45:44
-fstrict-aliasingと-funit-at-a-timeはメリットよりデメリットのほうが多い気がする。
69デフォルトの名無しさん:05/01/07 00:41:43
あのね、linuxとかgccはビルド環境もターゲット環境も多岐にわたるから、
中核部分の開発が激しく盛り上がってるときはどうしてももっとも主流の環境が
中心になるのだよ。LinuxだったらターゲットCPUはx86系で開発環境はLinux上、つまり
セルフコンパイル環境がね。といっても他の環境でも試さなければ問題が発見できないから、
それはそれで行なうわけ。

まあ1つのターゲットと1つの環境でしか開発したことのない人間は黙ってロッテことですな(笑
たとえばautoconfとか使ったことある?ターゲット環境やビルド環境に合わせてmakefileを自動生成数ツール。
70gcc初心者 :05/01/07 02:46:23
-- 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です。今手元に実行環境がなくあいまいな質問になってしまいましたが、
よろしくお願いいたします。




71デフォルトの名無しさん:05/01/07 02:54:59
gcc -v test.cしてみる
72デフォルトの名無しさん:05/01/07 02:58:41
gcc -o test test.o ... でリンクすればよかったのにな。
73デフォルトの名無しさん:05/01/07 22:24:14
なんだよ、最後は「実行しても何も表示されません」かと思ったのに。
全部読んで損した。
74gcc初心者 :05/01/08 01:03:34
%ld でリインクできた。
75デフォルトの名無しさん:05/01/08 07:17:26
リインク!!
76デフォルトの名無しさん:05/01/08 17:52:14
GNUの創造主 インタビュー

Interview: Richard Stallman
http://kerneltrap.org/node/4484
77デフォルトの名無しさん:05/01/09 08:47:02
キムチチゲ
78デフォルトの名無しさん:05/01/21 20:36:27
Did you receive the electric wave?
79デフォルトの名無しさん:05/01/21 20:46:45
yeno.
80デフォルトの名無しさん:05/01/21 20:52:46
最適化強くなってるから下手にフラグ付けると変なバイナリ出来そうだな…。
81デフォルトの名無しさん:05/01/30 03:26:20
rmsの波だの結晶、そのひとつがgcc。
82デフォルトの名無しさん:05/01/30 03:27:20
波だ→涙
83デフォルトの名無しさん:05/01/30 03:31:38
codesourceryって何者でつか?
84デフォルトの名無しさん:05/01/30 09:43:48
この前初めてインテルC++使ってみたけどGCC3.3.4に比較して45%以上の
パフォーマンス向上が確認できた。
85デフォルトの名無しさん:05/01/30 10:42:50
そりゃそうだろ
86デフォルトの名無しさん:05/01/30 12:40:18
>>84
それが売りだから。>IA32orIA64パフォーマンス
逆にIAマシンでgccとパフォーマンス変わらなければ存在意義ないし。
87デフォルトの名無しさん:05/01/30 17:50:53
# define __acquire(x)  __context__(1)

っていうコードで悩んでるんだけどな、
__context__(1)ってのはどういう意味なんだろう?
88デフォルトの名無しさん:05/01/30 22:07:00
Pentium3だとほんの少し速くなる程度。Pentium4なら劇的に速くなるのかな。
89デフォルトの名無しさん:05/01/30 22:50:51
GCCがPen4に対応する気がないから。
90デフォルトの名無しさん:05/01/31 13:24:52
gccってのはなにもIAマシンだけに固執してるわけではない。(IAユーザは多いが)
91デフォルトの名無しさん:05/01/31 13:28:01
しかし、g++の最適化がそれほど研かれてない気もする。
それもパフォーマンスが悪い原因の一つかな。
92デフォルトの名無しさん:05/01/31 13:42:33
gccはクロス・コンパイル機能はダントツかもしれんな。
93デフォルトの名無しさん:05/01/31 13:44:45
CPUをgccに最適化するとよいと行ってみるテスト
94デフォルトの名無しさん:05/01/31 13:48:29
>>93
RISCにすればそこそこ速そう。x86が悪いんだ!
95デフォルトの名無しさん:05/02/01 00:41:19
捕手
96デフォルトの名無しさん:05/02/01 01:01:14
gccは多態性がある。
97デフォルトの名無しさん:05/02/01 02:28:38
98デフォルトの名無しさん:05/02/01 05:06:43
大勢がx86-64にチェンジすればまた変わるんだろうな
レジスタ数増えれば最適化のチャンスも増えるし
99デフォルトの名無しさん:05/02/01 06:01:30
autovectorizationをgcc3にバックポートすればもっと変わる
100デフォルトの名無しさん:05/02/01 09:05:12
素直に4使えば?
101デフォルトの名無しさん:05/02/01 10:16:17
>>99
mudflapを3に(ry
102デフォルトの名無しさん:05/02/01 23:42:09
gcc 3.4になってから

if (functionName) {
...
}

みたいに関数名をboolコンテキスト持ってくると

the address of `functionName', will always evaluate as `true'

と警告が出るようになったんですが、これを抑制するオプ
ションが無くて参ってます。何かこの警告を消す良い方法は
無いでしょうか? ちなみにマクロを展開したあとにこういう
文になります。
103デフォルトの名無しさん:05/02/02 01:32:53
>>102
試してないけど、 functionName != 0 にしたらどうだろう。
でもこれは、マクロが問題なんじゃないかな?
104デフォルトの名無しさん:05/02/03 22:17:50
>>103
ありがとうございます。それでうまくいきました。
でもこういうマクロ問題なのかなあ・・・
105デフォルトの名無しさん:05/02/03 22:26:16
>>104
出された警告の意味わかってるのか?
106デフォルトの名無しさん:05/02/03 23:47:22
普通の関数は0番地に配置されることは絶対無い
(アーキテクチャにもよるがこれはハードウェアの仕様)
ので常にtrueになるよという警告だろ。

x86の場合、確か0番地はベクタテーブルだから必ず
割り込みルーチンのポインタが書かれていると思ったけど。
107デフォルトの名無しさん:05/02/03 23:58:28
>>106
君はいつまでリアルモードで生活してるのかね?
108デフォルトの名無しさん:05/02/04 00:30:00
関数へのポインタが整数の定数0と比較して等しくならないのはCの仕様。
109デフォルトの名無しさん:05/02/04 00:37:55
>>105
字面の意味じゃなくて何故この警告が抑制できないかって
ことですよね。全然わかりません。

-Wno-xxx で警告が消せないってことはプログラマに絶対
注意喚起する必要があるって判断なんだろうけど、正直
unused variable と同レベルの警告とかしか思えません。
110デフォルトの名無しさん:05/02/04 01:01:18
正直unused variableと同レベルの
どうでもいい話題 > 何故この警告が抑制できないかって
111デフォルトの名無しさん:05/02/04 21:56:18
現在、gcc.gnu.orgのサーバが障害発生中。
このサーバはsources.redhat.comも運用している。
ファイルシステムに問題があった模様で、現在復旧中。
112デフォルトの名無しさん:05/02/04 22:08:36
>>111
ガンガって復旧汁ぬぬぬ
113デフォルトの名無しさん:05/02/04 23:25:28
>>111
アンチGNU野郎に攻撃されたのかと思ったぞ。
114デフォルトの名無しさん:05/02/05 22:20:38
それいいね
115デフォルトの名無しさん:05/02/06 09:57:19
>>102
そんな謎のコードを生成するマクロ使うな
116デフォルトの名無しさん:05/02/06 10:55:39
大雑把にはこういう感じなんすけど
書き方が良くないんでしょうか・・・

#define (a,b,c,func)
do {
 foo(a,b);
 bar(b,c);
 if (func) {
  func();
 }
} while(0)
117デフォルトの名無しさん:05/02/06 11:13:33
キモイ
118デフォルトの名無しさん:05/02/06 11:18:43
do とか使う人嫌いです
119デフォルトの名無しさん:05/02/06 12:05:03
>>118
かわりに何使えばいいでしょう??
120デフォルトの名無しさん:05/02/06 12:19:12
つうかこれってdo〜while使う必要あるのか?
121デフォルトの名無しさん:05/02/06 12:21:37
> if (func) {
これなんの意味があるの?
122デフォルトの名無しさん:05/02/06 12:24:40
>>120
二つ以上の文をマクロにするとき do {} while(0) で囲うのが
普通と思っていたんですが、実は普通じゃなかったんでしょうか・・・
123デフォルトの名無しさん:05/02/06 12:25:30
>>121
func に相当する処理が不要になるケースがあるので、
その場合 NULL を与えればそこを飛ばせるように、という
意図なんですが・・・
124デフォルトの名無しさん:05/02/06 12:27:12
>>122
do..whileはbreakで抜けたい時だけですよ…
125デフォルトの名無しさん:05/02/06 12:35:00
こっちいってくれ
C言語なら俺に聞け! Part 101
http://pc5.2ch.net/test/read.cgi/tech/1107128274/
126デフォルトの名無しさん:05/02/06 13:04:33
>>125
あ、そうですね 失礼しました
127デフォルトの名無しさん:05/02/06 13:31:11
>>122
セミコロンを要求する意図での使用は普通。
貴方は正しい。
128デフォルトの名無しさん:05/02/06 14:27:50
>>123
funcあり版となし版を用意する方が医院で内科医?
129デフォルトの名無しさん:05/02/06 21:17:44
gdcって統合されないのかな?
130デフォルトの名無しさん:05/02/06 21:23:20
これ以上肥大化させないでくれ……
131デフォルトの名無しさん:05/02/06 21:30:40
gcc.gnu.org 復活age
132デフォルトの名無しさん:05/02/07 13:46:29
MSも酷いことするよな。
いくらGCCが憎いからって・・・
133デフォルトの名無しさん:05/02/07 17:28:23
>>132
いつもやり方が同じなのが笑える
134デフォルトの名無しさん:05/02/07 22:27:38
gccは世界遺産に認定
135デフォルトの名無しさん:05/02/08 17:01:41
gccのバックエンドの書き方解説してるページはどこですか?
136デフォルトの名無しさん:05/02/08 18:09:29
バックエンドは知らん。

フロントエンドなら GCC Frontend HOWTO があるが。
137デフォルトの名無しさん:05/02/11 13:11:47
gcc4.0はいつリリースでつか?
138デフォルトの名無しさん:05/02/11 15:07:44
http://www.google.com/search?q=%22GCC+4.0%22+%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9
上から 2 番目。
検索エンジンぐらい使えよ、ボケ。
139デフォルトの名無しさん:05/02/18 04:23:38
AthlonXPのCPU使っていてフラグに-fprefetch-loop-arrays付けるとQuantiSpeedを使ってくれるよう最適化するのかな。
140デフォルトの名無しさん:05/02/22 13:38:49
GCC 4.0 Status Report (2005-02-03)
ttp://gcc.gnu.org/ml/gcc/2005-02/msg00079.html
141デフォルトの名無しさん:05/02/22 16:10:09
>>140
> Therefore, my current expectation for a GCC 4.0 release date is April 15th.
4/15に4.0リリース見込みか・・・まぁ伸びるだろうけど。
142デフォルトの名無しさん:05/03/01 10:11:05
Active development (mainline): will become GCC 4.1.0
http://gcc.gnu.org/gcc-4.1/changes.html


GCC 4.1 Projects
http://gcc.gnu.org/wiki/GCC%204.1%20Projects


What will be in 4.0
http://gcc.gnu.org/wiki/What%20will%20be%20in%204.0
143デフォルトの名無しさん:05/03/01 15:33:50
4.0の最適化がよくなってきたね。
20050222でやるとgcc3とほとんど同じ速さになった。(FC3 )
4.1のx86_64がコンパイルできない。
crti.o がないといっておこられる。
x86_64用のcrti.asmがないんだけど。
144デフォルトの名無しさん:05/03/01 15:40:49
>>143
以下へ進め!
http://gcc.gnu.org/bugzilla/
145デフォルトの名無しさん:05/03/01 17:53:13
ちょっとお聞きしたいんですが、以下のようなファイル
---ファイルここから---
--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というバージョンです。
146デフォルトの名無しさん:05/03/01 18:18:51
>>145
gcc かどうかって関係ないんでは。本当にこの通りだとすると、cpp の
出力に struct _hoge {...}; が含まれるでしょ?
147デフォルトの名無しさん:05/03/01 18:29:00
>>145
library2.hにインクルードガードが掛かってるとか?
148145:05/03/01 21:25:18
>>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デフォルトの名無しさん:05/03/02 11:17:08
そういうコード書く奴が悪いと思うが。
150デフォルトの名無しさん:05/03/02 16:54:34
>>149
この場合の悪いやつとは誰?

1.Gtk+の開発者
2.ruby-gnome2の開発者
151デフォルトの名無しさん:05/03/02 21:29:33
Ruby!!!!!!!!!!!!!!!!
152デフォルトの名無しさん:05/03/04 00:26:58
>>151
バカはしゃしゃり出てこないように。
153デフォルトの名無しさん:05/03/04 04:06:21
Ruby!!!!!!!!!!!!!!!!
154デフォルトの名無しさん:05/03/05 06:22:40
gccってなんと読むのですか?
155デフォルトの名無しさん:05/03/05 12:31:26
>>154
みかか

gcc4の最適化が大分賢くなってきたね。gcc3.4より早くなるコードも出てきたよ。
156デフォルトの名無しさん:05/03/05 12:45:17
バグが怖くて使えないけどな〜
157デフォルトの名無しさん:05/03/05 14:30:52
>>155
きそそ

じゃないの?
158デフォルトの名無しさん:05/03/05 14:42:13
>>156
ま、僕も試してるだけだけど、
そうはいっても、どのバージョンにも少しずつ問題あるしなー。

>>157
歳がばれますね。(お互いに)
159デフォルトの名無しさん:05/03/05 15:59:00
JISかな配列と年齢に何の因果関係が?
160デフォルトの名無しさん:05/03/05 16:07:26
ぐっしっし
161デフォルトの名無しさん:05/03/05 16:25:22
Mudflapって、IBMのプロポリスみたいに、運用時のセキュリティ向上に使えるものなんでしょうか?
それとも、GCC BoundChecking patchみたいにデベロッパのデバッグ向け?
162デフォルトの名無しさん:05/03/05 19:09:04
>>161
遅くなるので、デバッグ以外の用途は厳しいような気がしますな。
163デフォルトの名無しさん:05/03/05 21:44:22
そりゃあんただけですな(苦笑
164デフォルトの名無しさん:05/03/06 02:15:30
>>162
MLを見るに、現状だとboundscheckingパッチ並み(かそれ以上)に遅いようですけど、
4.0の正式リリース時までに改善されたりする予定はないんでしょうか?

HeapOverrun対応ってことで、IBMのよりヨサゲなんですけども。。
165デフォルトの名無しさん:05/03/06 20:48:56
>>158
因みに、私は22ですよ
(みかかは知ってるけど、確かPC雑誌で読んだ知識で、普通に使われてた時代はネットしてなかった)
確かに友達はみんな知らんなぁ
166デフォルトの名無しさん:05/03/06 23:57:30
>>164
そう簡単には速くならんと思う。
167デフォルトの名無しさん:05/03/07 00:36:40
>>165
がびーん、おじさんは俺だけか・・・

>>164
多少早くなるかもしれんけど、劇的に変わることはないんじゃないかな。
168デフォルトの名無しさん:05/03/08 13:33:00
もせ
169デフォルトの名無しさん:05/03/13 19:55:42
【隔離】Cなら俺に訊け! Part.104【病棟】
http://pc5.2ch.net/test/read.cgi/tech/1110099763/584
から飛んできました。

584 :デフォルトの名無しさん :05/03/13 19:05:28
if (0 <=c && c<=127) とすると、コンパイラが
comparison is always true due to limited range of data type
と警告を出しました。コンパイラは gcc 3.3 です。
170デフォルトの名無しさん:05/03/13 20:15:58
>>169
元スレで結論は出てると思うが
171デフォルトの名無しさん:05/03/13 22:21:41
>>170 あ、元スレのほうにレスがついてました。
ありがとうございました。
172デフォルトの名無しさん:05/03/14 06:00:42
おそらく >>169 の処理系では, 先に CHAR_MAX=127 と定義されて
c <= 127 は >>169 の処理系では c <= CHAR_MAX と等価なので,
常に真になると警告してるような気がする。

CHAR_MAX は処理系定義なので CHAR_MAX が 128 以上に定義されてる
場合は警告は出ない鴨。
173デフォルトの名無しさん:05/03/14 06:09:35
>>172
元スレで結論が出てる話にいまさら「気がする」と書き込んでどうする。
ついでに言っておくが、 CHAR_MAX=255,CHAR_MIN=0 でも警告されるだろうな。
174デフォルトの名無しさん:05/03/14 06:12:25
>>173
CHAR_MAX=255の場合でも警告されるの?詳細希望。
175174:05/03/14 06:16:00
あ,CHAR_MIN=0の場合か。失敬。
176デフォルトの名無しさん:05/03/14 20:50:24
何故ここでC言語の文法の話なのだ?
177デフォルトの名無しさん:05/03/14 23:28:02
警告の話だろ
178デフォルトの名無しさん:05/03/15 00:27:33
>>177
出力された警告の通りでしょ。疑問なんかなんにもないじゃん。
で?
179デフォルトの名無しさん:05/03/15 01:18:44
gccのライブラリの話ってここでいいの?
180デフォルトの名無しさん:05/03/15 01:20:34
「gccのライブラリ」じゃぁ誰も分からん。
181デフォルトの名無しさん:05/03/15 01:25:51
わかんないなら答えなきゃいいのに。
182マイク ◆yrBrqfF1Ew :05/03/15 03:09:30
まあ馬鹿同士仲良くやれよ(▽
183デフォルトの名無しさん:05/03/15 03:14:13
馬鹿が集まってきたなw
184デフォルトの名無しさん:05/03/15 03:24:36
俺は、>>172の指摘したgccの警告は(・∀・)イイ!!と感じる。
ウザイと感じるのはVCでいっぱいいっぱいの初心者。

警告に関して言えば、gccの優れた点の一つだと思う。
printf系の書式指定する出力関数の書式チェックをある程度やってくれるのも(・∀・)イイ!!
185デフォルトの名無しさん:05/03/15 05:32:12
gccってなんて読むの?ぐっくっく?
186デフォルトの名無しさん:05/03/15 07:40:16
>>185
ゲェーツェーツェー
187デフォルトの名無しさん:05/03/15 23:28:31
>>185
本当はげしし
188デフォルトの名無しさん:05/03/16 01:19:23
期待と不安が交錯するオープンソースコンパイラの新バージョン開発
http://japan.cnet.com/news/ent/story/0,2000047623,20081333,00.htm
189デフォルトの名無しさん:05/03/16 01:55:18
>>185
げーしっく
190デフォルトの名無しさん:05/03/16 02:55:02
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でこんな感じで最適化オプションを設定してます。
192デフォルトの名無しさん:05/03/16 10:30:22
>>191
最適化オプションが「安全」って、どういうことよ?
193デフォルトの名無しさん:05/03/16 11:25:59
コケたり妙な挙動しないかとか。
194デフォルトの名無しさん:05/03/16 11:40:17
単に何もわかってない最適化厨と思われ。

195デフォルトの名無しさん:05/03/16 13:12:45
>>191
何も付けない。
196デフォルトの名無しさん:05/03/16 15:16:16
最適化で動作がおかしくなるプログラムは、そのプログラムのソースが
元からおかしくて、最適化で問題が露呈するケースが多いように思う。
197デフォルトの名無しさん:05/03/16 15:50:46
>>190
rmsは今でも現役です。
198デフォルトの名無しさん:05/03/16 16:23:36
4.0のスケジュールはどこで確認できるの?
199デフォルトの名無しさん:05/03/16 16:49:57
>>198
大雑把にはコレ:
http://gcc.gnu.org/develop.html#timeline

細かいのは、gcc ML を読むしかない。
今はコレ:
http://gcc.gnu.org/ml/gcc/2005-03/msg00477.html
> the April 15th target for GCC 4.0
200デフォルトの名無しさん:05/03/16 17:27:09
生涯現役。あっちもバリバリです。
201デフォルトの名無しさん:05/03/17 00:25:11
>>196
確かに。

Strict aliasingのルールなんて、知ってる奴のほうが少ない。
202デフォルトの名無しさん:05/03/17 16:42:53
open64ってどう? 使ったことある人いる?
http://open64.sourceforge.net/

元はSGIのPro64というコンパイラで科学計算分野で使われていたらしい。GPL。

203デフォルトの名無しさん:05/03/17 19:36:37
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
206205:05/03/18 01:02:39
実行時か。
207デフォルトの名無しさん:05/03/18 03:26:58
>>204
よくわからんが、動的ライブラリにしたいのではなくて?
208デフォルトの名無しさん:05/03/18 04:58:37
>>204
-Rとか-rpathあたり。
209デフォルトの名無しさん:05/03/18 12:12:00
>>204
LD_PRELOAD
210デフォルトの名無しさん:2005/03/22(火) 23:53:57
グッシッシ
211デフォルトの名無しさん:2005/03/22(火) 23:55:00
>>189
なんかその読みは、gotoを多用しそうだなw
212デフォルトの名無しさん:2005/03/26(土) 04:58:30
gccで指定できるpragmaの一覧ってどこにあるのでしょうか
213デフォルトの名無しさん:2005/03/26(土) 05:39:21
info
214デフォルトの名無しさん:2005/03/29(火) 18:11:52
OpenMPとpthreadの違いを教えてください
215デフォルトの名無しさん:2005/03/29(火) 21:50:50
>>214
ここで聞いても答えはないと思うぞ。
216デフォルトの名無しさん:2005/03/30(水) 01:00:12
実行の割合を逐次表示させるコードを書いているんだけど、
Windowsコマンドラインでは滑らかに表示されるものが、
Linuxでは処理が完全に終わるまで表示されない。

例えば
for(i=0;i<100;i++) printf("\b%f%完了", hoge(i));

だれか解決方法わかりまつか?
217デフォルトの名無しさん:2005/03/30(水) 01:05:33
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);
220デフォルトの名無しさん:2005/03/30(水) 02:05:50
setvbufでstdoutを_IONBFにしても同じでしょ。
まあいいけど。

俺の、非常に狭く少ない過去の経験上、
Unix系(というかglibcだな)は、printf系は_IOLBF相当になっているみたい。
で、Win系(VC,BCC)では、標準出力がリダイレクトされてない場合は_IONBF
リダイレクトされている場合は_IOFBFのような気がした。
221デフォルトの名無しさん:2005/03/30(水) 10:38:50
Cのことなら俺に聞けスレでスルーされてしまったので、
こちらで聞きたいのですが、

gccでハイパースレッディングをフルに使う処理は、
どのように書けばいいのか、URLか本を教えてください

カーネルがHT有り無しで若干異なるようなので、
そういう書き方があるような感じがします。

並列プログラミング?
222デフォルトの名無しさん:2005/03/30(水) 11:29:41
>>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
224デフォルトの名無しさん:2005/03/30(水) 12:27:05
>>216
open()で/dev/stdoutとか開いてwriteで書けばよい。
ゆく〜り確実に文字がでてくるよ。
225デフォルトの名無しさん:2005/03/30(水) 13:40:48
>>222
>>223
thx!
226デフォルトの名無しさん:2005/03/30(水) 15:12:57
>>216
>>224で既出だけど、printfはバッファリングされるから
デバッグ出力なんかは fpritf(stdout, ... ) が常套手段。
227デフォルトの名無しさん:2005/03/30(水) 15:19:14
(゚Д゚)ハァ?
228デフォルトの名無しさん:2005/03/30(水) 15:26:56
>>216
今更だが、スレ違い。

>>225
m9(^Д^)プギャー
特別に stderr はバッファリングされないので、それと勘違いしてないかい?
229デフォルトの名無しさん:2005/03/30(水) 17:09:14
>>228
m9(^Д^)プギャー
230デフォルトの名無しさん:2005/03/30(水) 18:32:29
M7(9) add9 m7(9)
231デフォルトの名無しさん:2005/03/30(水) 21:20:07
>>226
fprintf も stdout に関してはバッファリングする処理系が多いと思うが。
stderr ならともかく。
232デフォルトの名無しさん:2005/03/30(水) 21:28:36
>>219がFA。
233デフォルトの名無しさん:2005/03/31(木) 10:58:12
opteron+Linux(suse9.1)+gccの環境で、インラインアセンブラを使いたいのですが、何が必要なのでしょうか?
234デフォルトの名無しさん:2005/03/31(木) 11:46:50
>>233
gccが入っていて普通に使えるようなら、他はとくに必要なものはない。
235デフォルトの名無しさん:2005/03/31(木) 17:39:44
opteron+Linux(suse9.1)+gccの環境で、淫乱ブラを使いたいのですが、何が必要なのでしょうか?
236デフォルトの名無しさん:2005/03/31(木) 17:55:39
>>235
胸があって普通に使えるようなら、他はとくに必要なものはない。
237226:2005/03/31(木) 18:27:10
素で間違えとったよ。
238デフォルトの名無しさん:2005/03/31(木) 18:39:30
239デフォルトの名無しさん:2005/03/31(木) 21:29:41
おかしすぎる..。笑いが止まらない。
240デフォルトの名無しさん:int 2ch =05/04/02(土) 00:01:28
今度の仕事の環境がlinuxらしいので、自宅のLinux環境にGCCを入れたいんですが、
GCCのインストール方法を簡単に説明したサイトないでしょうか?

241デフォルトの名無しさん:int 2ch =05/04/02(土) 00:39:18
そういう質問をする奴の「Linux環境」には
最初から入っている。
242デフォルトの名無しさん:int 2ch =05/04/02(土) 00:43:41
>>240
環境設定は、Linux板の該当ディストリスレで。
243デフォルトの名無しさん:int 2ch =05/04/02(土) 05:29:28
gprof でどんなルーチンでどれくらい時間かかってるのかな〜と思ってみてみたら、
実行時間全体の30パーセントが _Unwind_SjLj_Unregister と _Unwind_SjLj_Register
というルーチンで消費されていました。

これはいったい何のためのルーチンなんでしょうか。
例外処理のためルーチンっぽい気もします。
冷害が発生したときのためにスタックをどこまで回復するか、
&どのデストラクタを呼び出すかを記録するための物なのでしょうか?
244デフォルトの名無しさん:int 2ch =05/04/02(土) 05:45:17
ソース嫁
245デフォルトの名無しさん:int 2ch =05/04/02(土) 05:48:07
そう。
30%ってことはマルチスレッドなんかね。
TLSへのアクセスのコストが大きいんじゃないかな。

gccのソースコードくらい展開しとくといいよ。
そしたらgrepすればすぐ見つかるから。unwind-sjlj.c。


246デフォルトの名無しさん:int 2ch =05/04/02(土) 10:09:38
sjljってSetjmp/Longjmpだな。catch/throw実現の
247240:int 2ch =05/04/02(土) 10:17:42
gccをfindで検索しましたが見付かりませんでした。
本家のサイトにいって落してきたんですが、全部英語なもので。
日本語で説明してあるサイトなんてないんですかね。
248デフォルトの名無しさん:int 2ch =05/04/02(土) 10:17:56
例外ってそんなにかかんの?
249デフォルトの名無しさん:int 2ch =05/04/02(土) 10:52:36
C++の例外はかなりのコストでっせ。
例外ばかりでなく、デストラクタの巻き戻しにも関係しているので。
単体の関数呼び出しでは無視できるコストでも、
チリが積もれば山となって影響してくる。
デストラクタのチェインはリスト構造で、構造上キャッシュにも載りにくいから、
例外によるチェインを手繰る処理はかなり重くなる。
250デフォルトの名無しさん:int 2ch =05/04/02(土) 10:53:41
今までWindows上でのプログラム経験しかないのですが、
Linux+GCC上でWinのレジストリ操作みたいな事は
どうやって実現するのでしょうか?
自分で設定ファイル読み書きするのかなぁとは思っているのですけど。
251デフォルトの名無しさん:int 2ch =05/04/02(土) 10:55:15
>>250
環境変数か、パス決めうちが流儀らしい
Windowsから見れば全く馬鹿げてると思うだろうが
252デフォルトの名無しさん:int 2ch =05/04/02(土) 12:40:44
>>251
ふつー設定ファイルを別に用意するが。システム共通の設定なら
/etc とか /usr/local/share あたり、個人設定ならホームディレクトリに
. から始まるファイル名 (.bashrc とかね)。
253デフォルトの名無しさん:int 2ch =05/04/02(土) 12:49:09
>>252
普通は/usr/local/shareに設定ファイルは置きません。
shareはアーキテクチャ独立なデータの置き場所。

/etcか/usr/local/etcかはたいした問題じゃなくて、
OS・パッケージングする配布者・個々の管理者によって流儀は異なりうるので
適当にどこか一箇所でマクロで定義しとけばいい。
もしくはautoconfを採用してconfigureの定義するマクロを使う。
254250:int 2ch =05/04/02(土) 14:22:17
色々意見がわかれるのですね・・・

とりあえず一番簡単そうな設定ファイル方式で行こうと思います。
(アプリのカレントにapp.iniを作成)
255デフォルトの名無しさん:int 2ch =5,2005/04/02(土) 14:55:34
いいかげんスレ違いだが、
よりによって一番おバカな方式にフォールバックするのは何故だろう。
256デフォルトの名無しさん:int 2ch =5年,2005/04/02(土) 15:17:16
っていうかいまだに>>250みたいなことに悩まなければならない
お粗末なOSがあることが驚き
257デフォルトの名無しさん:int 2ch =5年,2005/04/02(土) 15:17:34
カレントにってのが意見の割れる原因なんだよね。
Unixスレだっけ?
ファイルのpathが一意に決まらないからとか、いろいろ言われてたの。

まあ、結局どんな方式でも一長一短なんだけど
それぞれの環境の流儀に従うのがベターだとは思う。

だからと言って、Win版apacheがhttpd.confを使わないでレジストリ設定になったら嫌だし
かといって、httpd.confが/WINNT/???/に作られるのもすごく嫌だけど。
258デフォルトの名無しさん:int 2ch =5年,2005/04/02(土) 15:33:08
unixだとコンパイル時に決まったりするからなあ
(諸般の事情で)移動させたら再コンパイルなんてアホくさ杉

これを譲ったとしても

>>256 のいうように悩まなければならない、というのはどうかしてるよね
お仕着せでも、ちょっと使いにくくても、
標準の方法やガイドラインがあるほうがマシ。
259デフォルトの名無しさん:int 2ch =5年,2005/04/02(土) 16:04:57
そもそもアプリケーションの捉え方が違うんだからしょうがない。
コマンドラインオプションで何でも決めるUnix文化にとって、
設定ファイルをどうするかなどということは瑣末な問題でしかない。
それでも、autoconfなりXtのリソースなり、ガイドラインはあるわけだが。
260デフォルトの名無しさん:int 2ch =5年,2005/04/02(土) 16:12:34
>>258
そこでシンボリックリンクですよ。

> >>256 のいうように悩まなければならない、というのはどうかしてるよね
まぁ、標準化団体があってないようなものだからねぇ。ただ、現実問題として
それで困ったことはない。
261デフォルトの名無しさん:int 2ch =5年,2005/04/02(土) 16:18:32
かように、ム板ではWindowsしかろくすっぽ知らない奴がコンプレックスを感じて
暴れるので、ネタじゃないならUNIX板で尋ねるのがよろしい。
262デフォルトの名無しさん:int 2ch =5年,2005/04/02(土) 16:22:27
>>261
判らないなら黙ってろって。邪魔だから。
263デフォルトの名無しさん:2005/04/02(土) 19:35:44
あはは。既に回答済なんでそろそろ結論が見えてきたところで書いたわけだが。
264デフォルトの名無しさん:2005/04/02(土) 23:21:31
逆のコンプレックスの塊がGNOMEなわけだが・・・
265デフォルトの名無しさん:2005/04/02(土) 23:43:27
いやそれならむしろKのほうが...
> まぁ、標準化団体があってないようなもの
*BSDは知らんがLSBにがんばってもらうか
ISOにもsubmitしたらしいし。
266デフォルトの名無しさん:2005/04/03(日) 01:01:07
GNOMEだったら、libgconf。設定は処理するには。
本スレはUNIX/Linux板のプログラミングスレ、GNOME/KDEスレなど。
267デフォルトの名無しさん:2005/04/03(日) 02:45:11
>>253
> 普通は/usr/local/shareに設定ファイルは置きません。
おれも share の下に設定ファイルを置くのはどうかと思うが、
意外と多いよ。有名どころのソフトだと vim とか tex あたり。
268デフォルトの名無しさん:2005/04/03(日) 03:11:44
そうそう。texは頭が痛い。
tex周辺ツールの設定ファイルもカオスの中に叩き込まれるのは参る。

vimはetcに置かない理由がさっぱりわからない例だと思う。

269デフォルトの名無しさん:2005/04/03(日) 05:11:29
Debianなので幸せだ。
/etc/{texmf,vim}
270デフォルトの名無しさん:2005/04/03(日) 08:26:02
>>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|...}だし。
271デフォルトの名無しさん:2005/04/03(日) 08:45:09
>>270
>/etc/の下にはむしろシステム全体にかかわるような設定にだけ集中してもらいたい。

ハゲ同。

>>254
ユーザーが使うアプリなら ~/.appnamerc or ~/.appname/* が基本だと思う。
272デフォルトの名無しさん:2005/04/03(日) 15:33:18
273デフォルトの名無しさん:2005/04/03(日) 20:27:48
おまえら、GCCの話をしてください
274デフォルトの名無しさん:2005/04/04(月) 01:06:46
RedHat Enterprise Linux 3.0のvimは/etc/vimrcに設定ファイルがあるよ。

GCC4.0ってどうなったん?
てかgdcを標準パッケージにいれてくれないのかなぁ。
275ヽ(´ー`)ノ ◆.ogCuANUcE :2005/04/04(月) 13:54:17
>>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でインストールディレクトリを指定して上書きインストールしてしまっても問題ないでしょうか?
277ヽ(´ー`)ノ ◆.ogCuANUcE :2005/04/04(月) 15:58:52
>>276
そういうのは SuSE スレに…。

普通、ディストリが提供しているパッケージ以外の方法でインスコするものは、
./configure --prefix=/usr/local とかで入れるものだ。

上書きすると何か問題あった時に元に戻せなくなるか、すげー苦労するぞ。
278デフォルトの名無しさん:2005/04/04(月) 16:15:42
>>277
> 上書きすると何か問題あった時に元に戻せなくなるか、すげー苦労するぞ。
別に苦労なんかしないでしょ。上書きがあるかどうかのチェックなんて「ディ
ストリが提供しているパッケージディストリが提供しているパッケージ」で簡
単にチェックできる訳だし、チェックできなかったらパッケージングシステム
使ってる意味ないし。
279デフォルトの名無しさん:2005/04/04(月) 21:31:00
結論:Windowsのレジストリはナイス。
280デフォルトの名無しさん:2005/04/04(月) 21:55:07
よかったね。おめでとう。
281ヽ(´ー`)ノ ◆.ogCuANUcE :2005/04/05(火) 13:20:31
>>278
s/すげー/不必要な/ で。
俺は libc 上書きしてパッケージどころか ls も使えなくなったことはあるけど(笑)。

そういや、FC4 Test 1 にはメインで gcc-4.0 入ってるんだな。
特に不具合とかは無いのだろうか…。
282デフォルトの名無しさん:2005/04/05(火) 16:36:42
>>281
人柱になっていただくのですよ。

よさげならリリース後に入れる。
阿鼻叫喚なら4.0.1か4.0.2まで待つと。


283デフォルトの名無しさん:2005/04/06(水) 00:16:54
FC3でgcc4を使って glibc, glib2, gtk2, firefox を ビルドしたものが無事動いた
284デフォルトの名無しさん:2005/04/07(木) 00:49:30
コンパイル速度はどうですか。遅い機械使ってるもんで気になる。
285デフォルトの名無しさん:2005/04/07(木) 14:04:19
>>284
486でも短いプロラムなら一瞬で終わった
286デフォルトの名無しさん:2005/04/07(木) 14:47:23
configureファイルの書き方を教えてください
287ヽ(´ー`)ノ ◆.ogCuANUcE :2005/04/07(木) 14:56:10
>>286
スレ違い。

Autoconf,Automakeについて
http://pc5.2ch.net/test/read.cgi/unix/1018470294/l50
288デフォルトの名無しさん:2005/04/07(木) 20:31:21
>>287
スレ違い。

自治,誘導について
http://pie.bbspink.com/test/read.cgi/leaf/1094979415/
289デフォルトの名無しさん:2005/04/09(土) 00:47:08
>>285
そらあたりまえ。
290デフォルトの名無しさん:2005/04/09(土) 06:49:18
>>289
スレ違い。

馬鹿の相手をする,馬鹿について
http://academy3.2ch.net/test/read.cgi/whis/1089643058/
291デフォルトの名無しさん:2005/04/11(月) 12:19:20
292デフォルトの名無しさん:2005/04/14(木) 23:25:40
293デフォルトの名無しさん:2005/04/14(木) 23:28:03
↑は、「gcc 4.0 RC2 も必要になったけど、まだ用意してないよ」という話。

294デフォルトの名無しさん:2005/04/15(金) 13:57:17
(Apr 30 2005) GCC 3.3.6 release は予定通りになりそうかな
295デフォルトの名無しさん:2005/04/16(土) 18:39:10
-masm=intelの出力がnasmで読めない件について
296デフォルトの名無しさん:2005/04/16(土) 21:06:09
>>295
スレ違い

アセンブラ… (´・∀・`)ヘー
http://pc8.2ch.net/test/read.cgi/tech/1101390110/
297デフォルトの名無しさん:2005/04/19(火) 12:43:07
>>279

皮肉にも、Win のフリーソフトではレジストリを
使わないものが歓迎される傾向がある。
プログラム本体と同じフォルダ (=ディレクトリ) に
.ini ファイルを作るタイプのものが主流。

容易に設定を移行できるメリットがある。
自前での設定ファイルの書き換えも楽。

Win2000/XP にも、ユーザーごとのフォルダは用意されるので
ユーザーごとに .ini ファイルを用意することも可能。
298デフォルトの名無しさん:2005/04/19(火) 13:18:37
299デフォルトの名無しさん:2005/04/19(火) 19:19:58
>>297
スレ違い。

お前ら理由を言え!何故、非常駐、非レジストリなのか?
http://pc8.2ch.net/test/read.cgi/win/1099188855/
300デフォルトの名無しさん:2005/04/22(金) 11:04:29
GCC 4.0 リリースあげ
http://gcc.gnu.org/gcc-4.0/
301デフォルトの名無しさん:2005/04/22(金) 11:31:25
おーヽ(´ー`)ノ
評価するぞ
時間ないけど
302デフォルトの名無しさん:2005/04/22(金) 13:14:02
gcc4.0.0をmakeしてmake installしました。場所はデフォルトのusr/localです。
この後、環境変数などを設定したいのですが、どこに何を書けばよいのでしょうか。
OSはfedora core3です。
303デフォルトの名無しさん:2005/04/22(金) 13:31:27
ふつう、環境変数なんて設定しなくても使えるぞ。
何を設定したいんだ?
304デフォルトの名無しさん:2005/04/22(金) 13:44:31
/etc/profile
305デフォルトの名無しさん:2005/04/22(金) 15:12:16
>>302
スレ違い。

Fedora Core 総合スレッド Part 12
http://pc8.2ch.net/test/read.cgi/linux/1113138775/
306デフォルトの名無しさん:2005/04/22(金) 15:20:34
>>303
インストールしたのにgcc -vでバージョン見ると古いままなんです。
307デフォルトの名無しさん:2005/04/22(金) 15:51:08
$ 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 が実行されてるんじゃないのかい?
って話だと思われ
310309:2005/04/22(金) 17:45:30
>>309 が >308 一行目の $ type gcc についてで
んで、二行目の $ /usr/local/bin/gcc -v を実行せよってのが、/usr/local/bin/ にインストールしたと思ったけど
できてないんでないかい?

ということだと思われ
311デフォルトの名無しさん:2005/04/22(金) 21:05:24
ま、/usr/local/binの方を先に宣言しておくか、aliasを使うかだね。
個人的には、後者のほうが手軽でいいと思うけど。。
312デフォルトの名無しさん:2005/04/23(土) 01:02:01
「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が存在しないというのはわかるのですが、解決方法がわかりません。
315デフォルトの名無しさん:2005/04/23(土) 12:09:35
aliasだとMakefileで困らないの?
316311: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.
318デフォルトの名無しさん:2005/04/23(土) 18:32:03
ansidecl.hが見つからない。
319デフォルトの名無しさん:2005/04/23(土) 18:35:04
3.xを使ってみるまえに4が出てしまったか。
320デフォルトの名無しさん:2005/04/24(日) 01:42:05
gccを使って作ったソフトを公開する場合は、
GPLに従って全部ソースコードを公開しなくてはならない。
321デフォルトの名無しさん:2005/04/24(日) 01:48:59
>>320
「使って作った」が「ソースを流用して作った」と言う意味なら、当たり前。
322デフォルトの名無しさん:2005/04/24(日) 12:31:24
4.0で興味があるのはこれでffdshowがいくらか速くなるのかということだ。
最近重くて再生が追いつかないのあるし。
Intelのコンパイラと比べて速くなる?
323デフォルトの名無しさん:2005/04/24(日) 13:42:05
iclに勝てるわけないじゃん
324デフォルトの名無しさん:2005/04/24(日) 16:04:05
4.0でも
gcc -S -masm=intel
の結果がnasmで読めないなんちゃってintel形式なのは直ってないのね_| ̄|○
325デフォルトの名無しさん:2005/04/24(日) 17:02:53
intel形式なんて(゚听)イラネ
326デフォルトの名無しさん:2005/04/24(日) 17:56:01
%./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

これは何?
327デフォルトの名無しさん:2005/04/24(日) 18:01:28
何って、見たまんまじゃないの?
328デフォルトの名無しさん:2005/04/24(日) 18:43:54
ごめん。つまらんミスだった。
% cd ./gcc-4.0.0
% configure
としてしまった。build 用の directory を用意する必要があった。
329デフォルトの名無しさん:2005/04/24(日) 21:03:29
面倒だな
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)
331デフォルトの名無しさん:2005/04/28(木) 01:49:58
そのバージョンは知らんが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を使ってくれるのでしょうか?
333デフォルトの名無しさん:2005/04/28(木) 16:14:44
334デフォルトの名無しさん:2005/04/28(木) 22:29:38
やる気無い人間をやる気にさせるコンパイラオプションってありますか?
335デフォルトの名無しさん:2005/04/28(木) 22:35:57
gcc -R18 moe.c とか..
gcc -R15 moemoe.c とか..
336デフォルトの名無しさん:2005/04/28(木) 22:38:40
萌えた。
337デフォルトの名無しさん:2005/04/28(木) 22:43:47
>>334
板違い。
338デフォルトの名無しさん:2005/04/28(木) 22:45:36
>>335
スレ違い。

萌えるオプションについて
http://pie.bbspink.com/test/read.cgi/leaf/1094979415/
339デフォルトの名無しさん:2005/04/28(木) 22:46:54
>>332
スレ違い。

「コンパイラ・スクリプトエンジン」相談室5
http://pc8.2ch.net/test/read.cgi/tech/1106129164/
340デフォルトの名無しさん:2005/04/28(木) 22:47:19
>>332
target指定してれば使ってくれる
341デフォルトの名無しさん:2005/04/28(木) 23:09:09
>>336-339は騙されたヤシラ
342デフォルトの名無しさん:2005/04/29(金) 12:07:23
>>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
勘で言うけど普通逆じゃね?
速い代わりに不正確なんでしょ?
345デフォルトの名無しさん:2005/04/30(土) 13:13:45
>>344
勘で言うけど激しく同意
346デフォルトの名無しさん:2005/04/30(土) 13:21:05
勘で言うけど速くて精度のいい演算をするためのオプションだよ
347デフォルトの名無しさん:2005/04/30(土) 13:42:18
>>367
そうだとしたら、それをなんでわざわざオプションにしてるワケ?
348デフォルトの名無しさん:2005/04/30(土) 15:52:00
バグが残ってます
349デフォルトの名無しさん:2005/04/30(土) 16:05:36
GCC使えねえ・・
350デフォルトの名無しさん:2005/04/30(土) 18:56:43
なぜdocumentを読まない。-ffast-mathは変数のチェックをさぼって高速化するオプションだって書いてあるじゃない。
351デフォルトの名無しさん:2005/04/30(土) 19:12:47
つまりバグってるわけね
352デフォルトの名無しさん:2005/04/30(土) 20:28:24
>>351
バグかどうかは仕様とセットでないと判断できんが。IEEE745 を仕様とするなら
-ffast-math は使っちゃダメ。
353デフォルトの名無しさん:2005/04/30(土) 23:32:50
ただ計算したいだけなら問題ないと思う。たぶん。

VC6とgcc -ffast-mathの実行速度がほとんど同じなんだよなあ。
VC6はどうなっているのか…
354デフォルトの名無しさん:2005/05/01(日) 02:52:54
Auto-vectorizationって使うには何かスイッチが必要なのでしょうか?
355デフォルトの名無しさん:2005/05/01(日) 20:57:50
なぜ、いつになってもgccは
不定や未定義のコードに対して警告を出さないのですか?
356デフォルトの名無しさん:2005/05/01(日) 21:07:21
>>355
おまえを含む全員が、コードを書いていないからだ。
357デフォルトの名無しさん:2005/05/01(日) 21:07:29
http://pc8.2ch.net/test/read.cgi/tech/1114223450/
>GNUが低品質なのはconfigureと無関係ではないだろう。
358デフォルトの名無しさん:2005/05/01(日) 21:39:19
>>355>>357がこの先生きのこるには
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
362デフォルトの名無しさん:2005/05/01(日) 23:10:13
>>361
ヒント:4行目
363デフォルトの名無しさん:2005/05/01(日) 23:10:27
あちゃー崩れた。
要するにg++で可変長配列を関数引数として渡したいだけなのですが。
gccの拡張機能でこの書式でできるはず。
参考:http://seclan.dll.jp/c99d/c99d04.htm
364デフォルトの名無しさん:2005/05/01(日) 23:11:14
>>360
関数の引数宣言で他の引数を使うことはできないよ。
あと、GCC関係なくてスレ違いだから、普通にCスレいきな。
365デフォルトの名無しさん:2005/05/01(日) 23:16:30
GCCについてのスレでCについて聞いてくる人の件ついて
366デフォルトの名無しさん:2005/05/01(日) 23:19:05
>>360
c99 modeなら可能だが、c++では駄目
367デフォルトの名無しさん:2005/05/01(日) 23:23:02
>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] << " ";
かな.....あとは大きいお友達に聞いてくれ。
368359:2005/05/02(月) 08:40:41
>>366
サンクス。あなたが正解。他の人は間違い。
C99でできる機能は全てC++(というかg++)でできると思ってた。
g++だと無理なのね。
gcc用に書き直したらうまくいった(使う気はないが)。
素直にクラスを使えってことですかね?
369デフォルトの名無しさん:2005/05/02(月) 09:07:24
16->32見てるとint型はポインタのサイズ(と言うかプロセッサの処理単位)にあわされると
言う前提があるように見える。

仕方がないことだ。
370デフォルトの名無しさん:2005/05/02(月) 10:54:21
>>368
他の人は間違ってないよ
提示された条件であればむしろ他の人のが正しい
言ってる意味わかる?
371デフォルトの名無しさん:2005/05/02(月) 11:04:57
C99で追加された可変長配列がgccで使えないことについて聞いてるんだから
>>366が的確な答えだろう。
他も間違ってはいないが的外れ。
372デフォルトの名無しさん:2005/05/02(月) 11:06:05
GCCについて part5:368: warning: `#pragma golden_week on' may generate inconsistent response in this thread.
373デフォルトの名無しさん:2005/05/02(月) 11:10:41
GCCについて part5:370: warning: `#pragma golden_week on' may generate inconsistent response in this thread.
374デフォルトの名無しさん:2005/05/02(月) 15:38:24
GCCについて part5:372: warning: `#pragma golden_week on' is obsolete
GCCについて part5:373: warning: `#pragma golden_week on' is obsolete

( ・_ゝ・)ツマンネ
375デフォルトの名無しさん:2005/05/02(月) 15:44:46
シンタックスの問題なら、最初はこっちに投げるのが筋だろ。
その後に誘導されるならいいけど。

C言語なら俺に聞け! Part 106
http://pc8.2ch.net/test/read.cgi/tech/1113102515/
C++相談室 part40
http://pc8.2ch.net/test/read.cgi/tech/1113408957/
376デフォルトの名無しさん:2005/05/04(水) 04:13:35
GCC-3.3.6 prerelease for testing
http://gcc.gnu.org/ml/gcc/2005-04/msg01745.html
377デフォルトの名無しさん:2005/05/08(日) 05:42:08
precompiled headerを使って複数ファイルのプログラムをビルドすると
リンク時に無名名前空間の中の参照変数が多重定義になってしまう。

PR/10591なんだけど、ずっと放置されてるなあ。そろそろなおしてくれないかなあ。
378デフォルトの名無しさん:2005/05/13(金) 20:58:34
379デフォルトの名無しさん:2005/05/14(土) 19:57:59
gccのwarningって個別に出す/出さないを制御できますか?
380デフォルトの名無しさん:2005/05/14(土) 20:03:16
>>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おぷしょんも教えてください。
382デフォルトの名無しさん:2005/05/23(月) 13:14:26
>>381
SuSE のことなんか知ったこっちゃねーので、SuSE スレに行ってください。
383デフォルトの名無しさん:2005/05/23(月) 13:46:30
384デフォルトの名無しさん:2005/05/24(火) 10:23:53
デフォルトのコマンドラインオプションをあらかじめ指定することは出来ないでしょうか?
385デフォルトの名無しさん:2005/05/24(火) 10:31:17
>>384
aliasでも使えば?
386デフォルトの名無しさん:2005/05/24(火) 12:48:06
specに入れとくとか。

387デフォルトの名無しさん:2005/05/24(火) 17:33:34
C++ですが
Javaの例外みたいに、例外を投げる関数を
try/catch していないときに、警告を出すように
するオプションってありますか?
388デフォルトの名無しさん:2005/05/24(火) 22:21:21
g++の例外処理がとても遅いのですがsjlj(setjmp/longjmp?)を使わない
で表引き法で処理するオプションってありますか?
389デフォルトの名無しさん:2005/05/25(水) 00:27:43
ある。configure のヘルプ出力を眺めてみ。
390デフォルトの名無しさん:2005/05/25(水) 00:36:34
>>388
configure のオプションには関係しそうなのがあるな。
最近はデフォルトで sjlj に依らない実装のはずだが。
391デフォルトの名無しさん:2005/05/25(水) 02:17:25
>>388
g++の例外処理が重たいのは、どちらかというとデストラクタ巻き戻しに起因するC++自身の問題ではないかと思われ。
多少オプションいじったくらいじゃ、ほとんど改善しないよ。
392デフォルトの名無しさん:2005/05/25(水) 06:59:11
>>389-391
皆様ありがとうございます。
調べてみます。

>>391
そうでしたか。
簡易DBMSを作っていたのですが,呼び出し回数の多い処理で例外を使うのを
止めたところ5倍くらい速度があがったので、例外処理を高速化すれば
もっと性能があがるかもと思ってました(profileをとるとsjlj…unwind系の関数が上位に
きてます。)
393デフォルトの名無しさん:2005/05/25(水) 15:14:25
すみません、GNUのリンカーの質問は、どのスレッドで行えばよいのでしょう?
394デフォルトの名無しさん:2005/05/25(水) 15:34:25
>>393
内容にも拠るけど、ここでもいいんでない?
makeが絡むならこっちとか。
make makes many problems
http://pc8.2ch.net/test/read.cgi/tech/1029599472/
環境が絡むなら該当環境板の方がいいかもしれないけど。
395デフォルトの名無しさん:2005/05/25(水) 15:39:54
>>394
あ、いえ、リンカーのセグメントなどの指示をするロードスクリプトファイル(?)の
質問になります。
ここでも良いでしょうか?
396デフォルトの名無しさん:2005/05/25(水) 15:48:23
まぁいいと思うけど、組込系とかの方が即答できる奴が多いかもしれない。
397デフォルトの名無しさん:2005/05/25(水) 16:09:18
では質問します。
私はGCC環境は初めてです。ARMプロセッサのプログラムをGCC開発環境で
組もうとしています。趣味の用途での開発です。
ARMプロセッサには(フラッシュ)ROM領域やRAM領域があるため、リンカにてその辺のセグメント指示をしなくてはなりません。
そこで、リンカについてttp://www.gnuarm.com/にあった、リンカの説明書で勉強したり、いろいろなサイトで勉強をしました。
実際のサンプルとして、あるサイトにあったロードスクリプトファイルをみました。
そこで質問なのですが、その中のセグメント指定欄に、*(.rodata)などの記述がありました。
このrodataとは何なのでしょうか?
398デフォルトの名無しさん:2005/05/25(水) 16:22:46
Linker && Loader
ttp://pc8.2ch.net/test/read.cgi/tech/1033403294/
こういうスレもあるよ。
399デフォルトの名無しさん:2005/05/25(水) 16:34:40
定数領域ってことじゃないの?
400デフォルトの名無しさん:2005/05/25(水) 16:48:18
>>339
あ、ほんとだ。定数を記述した状態で*(.rodata)記述をとってリンクするとエラーになります。
ありがとうございました。
もしかすると基本的なことなのかな?
さすがに.textあたりは知っていたのですが、.rodataとか、他にも.glue_7とかありまして。
この辺の勉強をするのにおすすめのサイトや本はありませんか?
いろいろぐぐってみたのですが、みつかりませんでした。
401デフォルトの名無しさん:2005/05/26(木) 13:05:46
>>400
>>398から得られるリンク先情報、およびld(binutil)のinfoぜんぶ。
402デフォルトの名無しさん:2005/05/30(月) 22:32:33
コマンドオプションのリファレンス見ても載っていないんですが。

int a;
short b = a;

のような明示的でないダウンサイズへ対する警告を出力するオプションはないんでしょうか?
403デフォルトの名無しさん:2005/05/31(火) 09:15:24
-Wall じゃ出すぎかね。
404402:2005/05/31(火) 12:09:13
3.3.3なんですが、-Wallではでまんでした。
405デフォルトの名無しさん:2005/05/31(火) 13:11:30
はでまんでした
406デフォルトの名無しさん:2005/05/31(火) 18:07:02
はでまんならしょうがないな。
407404:2005/05/31(火) 18:32:11
3.3.3なんですが、-Wallではでませんでした。

の間違いです...
408デフォルトの名無しさん:2005/05/31(火) 18:42:37
一度はでまんになるともう何を指定しても駄目
409デフォルトの名無しさん:2005/05/31(火) 18:46:37
漏れもはでまんと思う
410デフォルトの名無しさん:2005/05/31(火) 21:15:01
-Wallなんて全然オールじゃないから。
ひとつひとつそれらしいオプションをつけてやらないとだめ。
411デフォルトの名無しさん:2005/05/31(火) 23:36:55
確かに見当たらないなあ。
っつーかオプション一覧眺めてるだけで1時間使った。
オプション多杉。
412404:2005/06/01(水) 12:36:01
>>411
お手数おかけしております。

自分もそれらしいを、色々試したりしたんですが、見つかりませんでした。

ひょっとして、ないんですかね...
413412:2005/06/01(水) 12:37:44
× 自分もそれらしいを
○ 自分もそれらしいのを

また、間違えた...
414デフォルトの名無しさん:2005/06/03(金) 11:45:48
intなどは使用するマシンによって、大きさが変わりますが、
使用するマシンにかかわらず、16ビットの整数型を使いたい場合どうすればよいのでしょうか?
415デフォルトの名無しさん:2005/06/03(金) 11:51:11
C99使え。
416デフォルトの名無しさん:2005/06/03(金) 12:00:41
415の訳:

#include <stdint.h>

int16_t var;
417デフォルトの名無しさん:2005/06/04(土) 17:15:09
>>402-413
おまいら、しっかりしろよ!
厳密にソースチェックしたい場合はな、 lint 使うんだよ。
splint 入れとけや。
418デフォルトの名無しさん:2005/06/04(土) 20:28:50
あー、そういやそんなのもあったっけか。
すっかり忘れてたぃあはははは。


ぬるぽ。
419デフォルトの名無しさん:2005/06/04(土) 20:48:50
splintってC++使えたっけ?
420デフォルトの名無しさん:2005/06/04(土) 22:11:51
文法の問題でもないしな、考えてみたら。
421デフォルトの名無しさん:2005/06/07(火) 09:50:38
opteronでsuse linuxを動かしています。
m64を指定しないと64ビットコードを生成してくれないのでしょうか?
422デフォルトの名無しさん:2005/06/07(火) 10:53:44
>>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++ではこの条件文をどう書けば良いのでしょうか?
424デフォルトの名無しさん:2005/06/07(火) 14:12:30
if(s[0] == '\0')
425デフォルトの名無しさん:2005/06/07(火) 14:24:10
>>424
ありがとう。
426デフォルトの名無しさん:2005/06/07(火) 14:59:57
wchar_t string[] = { L"日本語" };

このバグって修正されましたか?
427デフォルトの名無しさん:2005/06/07(火) 15:15:15
>>426
試したことないけど、gcc-3.4 の -finput-charset で上手くいかないかな。
428デフォルトの名無しさん:2005/06/07(火) 17:20:40
>>427
いきませんね。
というより、-finput-charsetがないんですが。

version 3.4.1
429デフォルトの名無しさん:2005/06/07(火) 18:04:19
>>428
そうか。まあガンバレ。
430デフォルトの名無しさん:2005/06/07(火) 18:23:02
そりゃないよ。とっつあ〜ん
431デフォルトの名無しさん:2005/06/07(火) 22:01:41
>>428
http://gcc.gnu.org/gcc-3.4/changes.html
ここに挙がってるのは嘘か?
432デフォルトの名無しさん:2005/06/07(火) 23:31:45
>>423
>char == NULL と言う書き方がbcc32では出来たのだけど
やるなヴォケ
433デフォルトの名無しさん:2005/06/08(水) 00:47:40
>>432
禿同
434423:2005/06/08(水) 07:18:11
>>432
何故?
レベルの高そうな作者のWEBサイトのサンプルコードで==NULLとか!=NULLを見かけたので
疑う事なく使ってました。
435デフォルトの名無しさん:2005/06/08(水) 08:11:30
>>434
ポインタ以外をNULLと比較するのは間違い。
436デフォルトの名無しさん:2005/06/08(水) 09:29:00
無効ポインタを表現するためだけに存在するのが NULL。
NULL をポインタ以外に「入れられるかどうか」はこの際全く問題じゃない。
ポインタ以外に NULL 入れてる奴は、根本的に NULL がわかってない勉強不足の人。

もっとも、最近じゃ NULL = 0 が言語仕様として確定したから、
普通はマクロ使われてる NULL 自体を 0 で書く人も増えてるらしいが。
437デフォルトの名無しさん:2005/06/08(水) 09:48:35
>>436
NULL=0 になったの?
NULL==0 が真というのは大昔から決まってたことだけど。
438デフォルトの名無しさん:2005/06/08(水) 10:18:15
>>437
なったはずだよ。
C99からかもだけど。
439デフォルトの名無しさん:2005/06/08(水) 10:20:37
> 無効ポインタを表現するためだけに存在するのが NULL。
おいおい、誰がそんなこと決めたんだよ(w

> ポインタ以外に NULL 入れてる奴は、根本的に NULL がわかってない勉強不足の人。
どう見ても、お前もわかってるようには見えないんだが。
440デフォルトの名無しさん:2005/06/08(水) 10:22:19
なら他に何を入れろと。
NULLをポインタ以外に入れるなんて、タンポンをアナルに突っ込むくらい使い道が違うぞ。
441デフォルトの名無しさん:2005/06/08(水) 10:30:44
たとえば文字列の最後はNULL
442デフォルトの名無しさん:2005/06/08(水) 10:37:33
>>441 NUL の間違いだろう。
443デフォルトの名無しさん:2005/06/08(水) 10:58:32
>>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

こういうのが常識だと思ってると、場合によっては痛い目みる。
444デフォルトの名無しさん:2005/06/08(水) 11:13:46
>MSのドキュメントが文字列終端をあらわすのにNULLをつかってる

マジスカ!?
そんなスカポな真似してるのか、MSは…
445デフォルトの名無しさん:2005/06/08(水) 11:15:30
>>443
MSのやつはオリジナルのドキュメントが "null terminated" と書いているところを、
日本語に訳す段階で「NULLで終わる」と間違えたもの。言語仕様ではない。
446デフォルトの名無しさん:2005/06/08(水) 11:17:52
>>443
C99では数値の0もNULLポインタ。int *p = 0; int *q = NULL; なら p == q は常に真。
さらに'\0'の値はゼロ(0)と決まってるので char c = '\0'; なら c == 0 も常に真。
447443:2005/06/08(水) 11:20:00
話がだいぶそれたけど、つまりC,C++共にNULLは、
アドレスポインタが無効であることを表す値であって、
文字列終端文字ではないってこと。

448デフォルトの名無しさん:2005/06/08(水) 11:34:08
NULLポインタの値はゼロに決まってる。
("C guarantees that zero is never a valid address for data")
文字列終端文字'\0'の値もゼロに決まってる。
("the null character, whose value is zero")
"NULL"も"'\0'"も値ゼロを示す単なるニモニック。
NULLはポインタ、'\0'は文字列終端用に定義されてるけれど、別の文脈で値ゼ
ロを示すために使うのが禁じられてる訳じゃない。
449デフォルトの名無しさん:2005/06/08(水) 11:43:22
>>448
どこからの引用かと思ったら、K&Rかよ。
いいからCFAQ読んでこい。
450デフォルトの名無しさん:2005/06/08(水) 11:53:27
> いいからCFAQ読んでこい。
そのCFAQでも「キャストの付いていないNULLはキャストの付いていない0と同
等である」ってはっきりと明示されてますが、何か?「NULLを使うことは (0
を使うのと違って)、ポインターが関係していることの親切な注意書きでしか
ない」とまで書かれてるし。そもそもCFAQのReferencesにはK&R1、2が使われ
てるんだけど。
451デフォルトの名無しさん:2005/06/08(水) 12:09:48
>>450
よく読め。

「キャストの付いていないNULLはキャストの付いていない0と同等である」
のすぐ後に続いて、
「NULLはポインターとしてのみ使うべきである。」
と書いてあるだろう。

「ポインターが関係していることの親切な注意書き」というのがわかっていれば、
ポインターが関係していない場所で使うのがどれだけ迷惑かわかるだろ?

CFAQ の Reference に K&R があったからといって、
オマエやそれ以外の人が K&R 仕様のコンパイラを使っているということにはならない。
本当に自分の使っているコンパイラが K&R, C89, C99 のどれに準拠しているのか知ってるのか?
452デフォルトの名無しさん:2005/06/08(水) 12:37:38
大したネタじゃないのに、必死になって粘着せんでもいいぞ>>450

無効ポインタが NULL という抽象表現になっていて、イコールゼロじゃなかったのは
中にはゼロアドレスが有効だったり、特別な無効アドレス値を予約してるプロセッサ系が
存在していた歴史的な事情があるからで、今となっては有名無実なものとなったので
C++やC99で改めて 0 と等価になっただけで、それまで NULL は(多分)ゼロだろうが
ゼロ = NULL と保証されているいうわけじゃないし、ゼロ表現のために必要ないところで
NULL をわざわざ持ち出す理由も意義もない。
453デフォルトの名無しさん:2005/06/08(水) 12:41:39
>>452 おまえもCFAQをよく読め。
454デフォルトの名無しさん:2005/06/08(水) 12:44:08
NULLぽは((void*)0)というのは仕様で
その値そのものも0 というも現状正しいが
0とNULLを等価に扱うのは用法として
「美しくない」ということでFA
455デフォルトの名無しさん:2005/06/08(水) 12:50:39
>>454 おまえもCFAQをよく読め。
ということでFA
456デフォルトの名無しさん:2005/06/08(水) 12:52:11
>>452
> 無効ポインタが NULL という抽象表現になっていて、
抽象表現って何だよ?ただのマクロだろが。

> ゼロ = NULL と保証されているいうわけじゃないし、
だからC89の段階(KR2)で既に保証されていた訳だが。

> NULL をわざわざ持ち出す理由も意義もない。
454の言う通り「こうした書き方が上品」という話と「こう書くのは間違ってる」という話とは
まるで別物。ポインタ以外をNULLと比較しても、何ら間違いじゃない。混乱の元だが。
457デフォルトの名無しさん:2005/06/08(水) 12:56:11
>>456
混乱の元 ⊂ 間違い
少なくとも「何ら」というのは言い過ぎ。
458デフォルトの名無しさん:2005/06/08(水) 13:00:38
それと、>>455もFAQを読み直そう
459デフォルトの名無しさん:2005/06/08(水) 13:02:22
>>456
> > ゼロ = NULL と保証されているいうわけじゃないし、
> だからC89の段階(KR2)で既に保証されていた訳だが。

この文脈で「ゼロ = NULL」というのは
「ヌルポインタのビットパターンはすべて0である」ということだと思うが、
C89では保証されて無いだろ。
460455:2005/06/08(水) 13:03:17
え?なんで?
461デフォルトの名無しさん:2005/06/08(水) 13:06:36
とりあえず読み直すべきはC FAQじゃなくてJIS X3010:2003だよね。
Web上からPDFで閲覧できるよ。仕様の話はまず仕様書から。
462デフォルトの名無しさん:2005/06/08(水) 13:23:15
空ポインタ定数の定義は規格書の
 6.3.2.3 ポインタ
NULLマクロの定義は
 7.17 共通の定義<stddef.h>
http://www.jisc.go.jp/app/pager?id=46861
463デフォルトの名無しさん:2005/06/08(水) 13:28:27
なんでISOじゃなくてJISなんだって突っ込む人いるといけないから
断っとくと、X3010:2003のISO/IEC 9899:1999との同等性は「IDT」に
分類されるから、編集上の変更以外の技術的内容は一致している。
464デフォルトの名無しさん:2005/06/08(水) 14:11:57
これでこの話題終了だな。
そもそもGCC関係ないし。
465デフォルトの名無しさん:2005/06/08(水) 14:37:38
466デフォルトの名無しさん:2005/06/08(水) 15:29:10
>>459
> この文脈で「ゼロ = NULL」というのは
> 「ヌルポインタのビットパターンはすべて0である」ということだと思うが、
> C89では保証されて無いだろ。
空ポインタと空ポインタ定数の区別が付いてないでしょ?
467デフォルトの名無しさん:2005/06/08(水) 15:33:01
いや、皆して一度話を最初から読んでみろ。
皆自分に都合のいい情報だけ拾って好き勝手書いてる。
既に書かれてる事を恣意的に無視してるとしか思えん

続きは>>465へ。
468デフォルトの名無しさん:2005/06/08(水) 15:33:25
ヌルポインタは整定数0に置き換えても問題なく、ただ見た目の違いだけだが
NULLは、C89に於いて(void *)0とdefineされている場合があることも明示されているので

NULLをポインタ以外の用途で比較等に用いるのは
C89に於いては、明らかな間違い。
469デフォルトの名無しさん:2005/06/08(水) 15:35:56
これも貼っときます。続きは>>465でね。

C FAQ 5. Null Pointers
http://www.eskimo.com/~scs/C-faq/s5.html
470デフォルトの名無しさん:2005/06/08(水) 15:37:49
「ヌルポインタ」の代わりに
NULLを使うのも、0を使うのも、正しい。

「0」の代わりに
NULLを使うのは、間違い。

「NULL」の代わりに
0を使うのは、正しい。
但し、この場合はNULLがヌルポインタの意味で使われていることが前提。
ヌルポインタ以外の意味でNULLが使われているとしたら、それ自体が間違い。
471デフォルトの名無しさん:2005/06/08(水) 15:43:08
>>470
最初からほとんどの人間がそう言ってる気がするんだが。
総括ってことでいいんだな?

お前らのぬるぽは、この漏れが一身に頂いてゆく!
さあ、漏れを殴って気を済ませろ!
これでこの話はおしまいだ!
472デフォルトの名無しさん:2005/06/08(水) 15:46:59
おしまいなのはお前だろ 消えうせろチンカス
ガッ
473デフォルトの名無しさん:2005/06/08(水) 15:54:01
>>456の一番最後の行辺りは、明らかに勘違いしてそうだが。
474デフォルトの名無しさん:2005/06/08(水) 16:09:35
>>470
> 「0」の代わりに
> NULLを使うのは、間違い。
それは処理系依存でしょ。実際に #define NULL 0 な処理系もあるわけで(GCCがそう)。
その場合、整数定数0の意味でNULLを使うのは可能だよ。読み手にひどく意地悪な書き方だけど

> ヌルポインタ以外の意味でNULLが使われているとしたら、それ自体が間違い。
だからこれも処理系依存だね。
475デフォルトの名無しさん:2005/06/08(水) 16:16:18
処理系依存つーか、マヌケな処理系ってだけだな。
ほとんどの場合、その環境下でも処理系の影響は受けないだろうから
処理系「依存」じゃあない…かもしれない。

ていうか、この話題になると急に元気になる奴を昔からよく見かけるが
何か深い理由でもあるのか?
昔煽られたのがトラウマになってるとか。
476デフォルトの名無しさん:2005/06/08(水) 16:20:45
>>474
> 実際に #define NULL 0 な処理系もあるわけで(GCCがそう)。

gcc使ってて、コンパイラとライブラリの区別ついてないのは恥ずかしいぞ。
うちの環境でC対象でgcc使うとNULLは(void*)0になる。
477デフォルトの名無しさん:2005/06/08(水) 16:43:14
要するに、変な祭りになるから使うな、が正解ですか?
478デフォルトの名無しさん:2005/06/08(水) 17:48:38
>>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スクリプトの中では入力フォームは使えないのではないかと思っています。

上記のスクリプトの前後は省略していますが、フォーム入力に関する何行かをコメント扱いしたら、しっかり動いてくれるのです。しかも、『一致したよ』という日本語も表示してくれます。

尚、スクリプト中の変数は、すべて省略部分にて定義してあります。

どなたか、このスクリプトの間違いを教えてくださいませんでしょうか?

よろしくお願いします。
480デフォルトの名無しさん:2005/06/08(水) 18:26:32
火消し乙(ププ
481デフォルトの名無しさん:2005/06/08(水) 18:27:08
>>479
スレまたは板が違います。
ヒント: " の対応関係
482デフォルトの名無しさん:2005/06/08(水) 18:27:31
言語はperlです。
言語はperlです。
言語はperlです。
483デフォルトの名無しさん:2005/06/08(水) 18:30:14
>>479
たぶんスレの内容を判断するところでミスってると思うよ
簡単に修正するとすればスレタイに"perl"という文字列が含まれているかチェックしておけばいいと思う
本当は文章を解析すればいいんだろうけど
さすがにそこまでやると大変だからね
484デフォルトの名無しさん:2005/06/08(水) 20:54:06
ヌルヌル言ってるやつはこうだ!
 ( ・∀・). | | ガッ
 と    ) | |
  Y /ノ人
    / ) <  >__Λ∩
 _/し'  . V`Д´)/
 (_フ彡     /  
485デフォルトの名無しさん:2005/06/08(水) 21:19:35
gcperlが出たのかと思った。
486デフォルトの名無しさん:2005/06/08(水) 23:00:15
>>474みたいなバカが存在する限り
そのバカを煽る輩(=俺)も出てきます。

ANSI/ISO規格において、NULLを
#define NULL (void *)0
と定義することを許している。
これはつまり、「ヌルポインタ以外の用途でNULLを使ってはいけない」と
規格で定めていると言い換えても良い。

規格に従った処理系でコンパイルエラーになるようなソースを
「処理系依存だから良い」などと言い切るバカはおまえくらいなもの。

普通は、規格に従った処理系でエラーになる場合
「規格で許されていないから」と判断する。
すなわち、NULLをヌルポインタ以外の用途で用いることは
規格で許されていない。
487デフォルトの名無しさん:2005/06/08(水) 23:32:20
「ある処理系で出来た」からと言っても
「出来る処理系もあるから、それが可能かどうかは処理系依存」
とはならない。

C89規格において
「関数内関数を作れるか」
「配列の要素数を変数に出来るか」
これらが可能なコンパイラがあるとしても、それは「処理系依存」ではなく
ただの「独自拡張」に過ぎない。

規格では、どちらも明確に「出来ない」と定められている。


その処理系でしか絶対に使わないソースで
非標準であることを理解した上で使う分には構わないけどね。
ここはGCCスレだし。
488デフォルトの名無しさん:2005/06/08(水) 23:36:30
おうオマエらこれコンパイルしてみて下さいますです?

#include<stdio.h>
int func(int *hoge) {
}
main() {
int *fuga;
func(&fuga);
}
489デフォルトの名無しさん:2005/06/08(水) 23:43:27
警告ではなくエラーにしろって事?
490デフォルトの名無しさん:2005/06/08(水) 23:46:52
gccでコンパイルすると警告の文が面白くならない?
491デフォルトの名無しさん:2005/06/08(水) 23:56:21
: warning: passing arg 1 of `func' from incompatible pointer type

変かな?
型の違うポインタを渡してるよ、って意味かと思うけど。

exciteで翻訳したら
両立しないポインタタイプから'func'のarg1つを通過します。
になったけど。
492デフォルトの名無しさん:2005/06/08(水) 23:58:03
意味不明。何が面白いのかさっぱりわからん。
493デフォルトの名無しさん:2005/06/08(水) 23:58:42
実際に型が違うじゃねーか。
494デフォルトの名無しさん:2005/06/09(木) 03:27:38
>>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 *なのか整数定数なのかは処理系依存。
495デフォルトの名無しさん:2005/06/09(木) 04:06:52
本物の知障ですか?

「運良くNULLが0と定義されている環境」でコンパイルが通ったけど
「標準規格に準拠した別の環境」でコンパイルが通らない、
こんなソースは標準に従ったソースとは言えない。
つまり、0の代わりにNULLを使用しているソースは標準に従っていない。

「NULLがどうdefineされているか」は処理系依存だが
「ヌルポインタ以外の用途にNULLを使って良いか」は、決して、処理系依存ではない。
496デフォルトの名無しさん:2005/06/09(木) 05:22:05
>>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に準拠した正しいコードである。
497デフォルトの名無しさん:2005/06/09(木) 05:37:42
もし一番下の「このコードは標準Cに準拠した正しいコードである」を否定するのであれば
「このようなコードは、標準Cでは正しくない」となる。

これは上2例についてもそのまま当てはまる。つまり、
「NULLをポインタ以外の文脈で使うコードは、標準Cでは正しくない」となる。

逆に、NULLをポインタ以外に用いることが許されるのであれば
int f() {
 あqwせdrftgyふじこlp;
}
も標準として許される、と言って良い。
498デフォルトの名無しさん:2005/06/09(木) 06:34:07
>>495
まずstrict conformingとconformingを区別するところからはじめよう。
499デフォルトの名無しさん:2005/06/09(木) 08:35:24
つまり、標準Cに厳密に準拠したとは言えないものの、
int f() {
 あqwせdrftgyふじこlp;
}
は、標準Cに準拠した正しいコードであると言いたいわけですね。
よくわかりました。
500デフォルトの名無しさん:2005/06/09(木) 08:50:37
ていうか


バカ?
誘導されてまでここでやるなよ。
501デフォルトの名無しさん:2005/06/09(木) 10:02:55
でもさ、そうまでしてNULLぽの定義とか躍起になって定義してる
ANSI/ISOなのにさ〜 どうして i=i++; を未定義とかで逃げてんのかね
副作用点がどうのこうのというのなら、きっちり定義すりゃいいんだ
委員会は面倒くさがりなアホッ子集団じゃねーか
502デフォルトの名無しさん:2005/06/09(木) 10:35:19
>>501
最適化について勉強汁
503432:2005/06/09(木) 10:37:40
異常に荒れてて笑った。

sizeof(char)==1なのは規格で保証されている。だから、
すべてのi++の代わりにi+=sizeof(char)と書いてもコンパイルは通るし問題なく動くだろう。

double getAngle(); //角度を返す(単位はdegree)
double sin(double); //正弦関数(引数の単位はradian)
という関数があったとき、
sin(getAngle());
とやってもコンパイラは文句をいわないだろう。

そういった意味においては、NULLを0の代わりに用いるのもありなのかもしれない。
かといってそれを実際にやったら狂人だが。
504デフォルトの名無しさん:2005/06/09(木) 10:42:20
0 または (void*)0 が NULL ポインタに「なり」ます
また NULL は 0 または (void*)0 と定義されます
NULL ポインタは 0 とは限りません

定数 NULL と (内部表現の) NULL ポインタ は別です

であってる?
505デフォルトの名無しさん:2005/06/09(木) 10:43:41
>>502
そんなん知るかボケ
こんなのは演算子の優先順位と同じだろ
確かに一意に決めると最適化効率下がりそうだけど、根性で何とかしろ

あとあれだ、2進数表記をそろそろ許せよな
毎度毎度gccにパッチ当てんの面倒なんだよ
506デフォルトの名無しさん:2005/06/09(木) 12:00:05
>>505
>根性で何とかしろ
だったらあんたが根性でなんとかしなさいよ

>毎度毎度gccにパッチ当てんの面倒なんだよ 
マクロで十分
変なコード書くな
507デフォルトの名無しさん:2005/06/09(木) 12:02:12
>>506
2進表記がマクロで十分?
そう簡単に書けるとは思わないなぁ。
508デフォルトの名無しさん:2005/06/09(木) 12:20:32
gccは言語拡張は排除していく方向みたいだからナァ。
2進数表記をC/C++標準に取り込んでもらわないとムリじゃないかね。
509デフォルトの名無しさん:2005/06/09(木) 12:27:06
自前でプリプロセッサ書くのがいいんでは。
510デフォルトの名無しさん:2005/06/09(木) 12:32:59
JavaやD言語など他の言語でのnullの扱い方を考えれば、
NULLを無効なアドレスポインタを表現するため以外につかうことが、いかにナンセンスかわかるだろ。

C++では
NULL == 0じゃない。
#define NULL   0
されたNULLがヌルこう覚えとけ。

文字列終端表現に使用するなんてもってのほか。
511506:2005/06/09(木) 12:33:02
>>507-508
ググってみ。いくつか見つかるよ
512デフォルトの名無しさん:2005/06/09(木) 12:39:40
>>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‐-、、      /   !
514デフォルトの名無しさん:2005/06/09(木) 13:29:19
>>504が激しくスルーされてますが、そうです。

「定数 NULL」じゃなくて「マクロ NULL」ですが。
「0」や「(void *)0」と「ヌル・ポインタ」も別ものです。
515デフォルトの名無しさん:2005/06/09(木) 14:05:53
なぜgccでは2進数表記を許していないの?
printfでも出力できないし。

仕様で決まってるから、とかじゃなく
なぜ仕様をそうしたのかの理由が知りたい
516デフォルトの名無しさん:2005/06/09(木) 14:25:31
K&Rに無かったから。
517デフォルトの名無しさん:2005/06/09(木) 14:44:13
まだNULLの話をやっていたのか。
518デフォルトの名無しさん:2005/06/09(木) 14:58:53
gcc拡張にいれればいいのにね。
文字列リテラルの\uエスケープあたりと違って上位互換性問題にならないだろうし。
519デフォルトの名無しさん:2005/06/09(木) 15:12:24
16進数表記のほうが4つまとめて見れるからはるかに見易いと思うけど
520デフォルトの名無しさん:2005/06/09(木) 15:32:18
昔のGCC拡張にはあった気がしたけどなあ。
0xFF とかの代わり 0b1101001101 とか書くの。
記憶違いかな。
521504:2005/06/09(木) 15:41:01
>>514 ありがd
522デフォルトの名無しさん:2005/06/09(木) 15:43:35
>>520
それはX68kの真里子版ではないか?
523デフォルトの名無しさん:2005/06/09(木) 15:57:20
tccは2進数定数書けたりする。
http://fabrice.bellard.free.fr/tcc/tcc-doc.html#SEC9
524デフォルトの名無しさん:2005/06/09(木) 17:27:34
>>522
おお、そう言えば!
すっきりしますた。ありがd。
525デフォルトの名無しさん:2005/06/09(木) 23:16:39
>>504,514,521
釣りかと思ってたんだが、マジで言ってたのか。
あの流れの中であんな曖昧な記述に同意を求めるのは釣りとしか思えなくてスルーしてた。
526デフォルトの名無しさん:2005/06/10(金) 00:24:38
>>525の考える曖昧でない記述ってのはこのスレではどれ?
>>504は長さと正確さがいい案配だと思うが。

> NULL ポインタは 0 とは限りません

なんかは緩い表現ではあるが。
527525:2005/06/10(金) 02:20:11
>>526
曖昧でない記述を全部挙げるわけにはいかないんでカンベンしてくれよ。
ただ>504の曖昧さなら指摘できる。

まず、全て大文字の "NULL" を stddef.h で定義されている
例のマクロ以外の意味で使うのは混乱の元。MSの日本語ドキュメントと同罪。
また "0" を、ソースコード中に表れるそれを指す場合と、
ビットパターンが全て0の値を指す場合が混ざっている(と思われる)。
最後の「定数〜は別です」という文に至ってはまったく意味不明。
528デフォルトの名無しさん:2005/06/10(金) 02:55:19
>>527
どうやらわかってないのは525って感じだね
529デフォルトの名無しさん:2005/06/10(金) 05:47:24
2進数 ←→ 16進数
って頭で直に変換できるぐらいの能力って必要じゃない?
530526:2005/06/10(金) 05:50:16
>>527
なんだ、
http://www.eskimo.com/~scs/C-faq/q5.2.html
も理解してない人か。
531デフォルトの名無しさん:2005/06/10(金) 07:16:41
>>529
必要だと思う。が、2進数で書けたら良いな、と思うこととは別。
532525:2005/06/10(金) 07:31:28
>>530
リンク先と>527の指摘は矛盾するということか?どこが?
533デフォルトの名無しさん:2005/06/10(金) 08:51:57
いいから喪前ら他所でやってくれ。
534デフォルトの名無しさん:2005/06/10(金) 10:13:51
>>532
>>530はあおりだから
ここじゃなくよそでやって
535デフォルトの名無しさん:2005/06/10(金) 10:15:31
とにかく、2進表記は必要です。ほしいです。
いや、別になくてもいいけど、あったら便利です!
だからパッチはあてつづけます。ツンデレですから。
536525:2005/06/10(金) 10:29:20
スマンカッタ 今後ぬるぽ関係の話は http://pc8.2ch.net/test/read.cgi/tech/1061947883/ でやるように気をつけるよ。
537デフォルトの名無しさん:2005/06/11(土) 10:01:23
2進表記ってひらがなだけの文章みたい。いらね。
538デフォルトの名無しさん:2005/06/11(土) 11:13:12
ひらがなが日本語に不要だと、君は!

とまではいかんが、多少なりと可読性を上げられるところはあるだろうし、
あればあったで有用なんじゃないだろうか。
現在メインストリームのコンパイラが独自拡張ですらサポートしていないって時点で
どうでもいいものと捉えられている(もしくは眼中にすらない)のには違いないんだろうけど。
539デフォルトの名無しさん:2005/06/11(土) 11:45:07
8進より有用だとは思うけどまあなくて困らないね。
540デフォルトの名無しさん:2005/06/11(土) 12:50:18
マクロで十分
541デフォルトの名無しさん:2005/06/11(土) 14:17:20
マクロでどう書くの?
542デフォルトの名無しさん:2005/06/11(土) 14:33:01
#include <bindigit.h>

-- bindigit.h --
#define B000000000000000000000000000000011
#define B000000000000000000000000000000102
#define B000000000000000000000000000000113
543デフォルトの名無しさん:2005/06/11(土) 15:39:52
>>542
32bit分でもたった4294967295行だしな。
ほんの150Gbyteくらいのサイズのヘッダを作るだけですむのでオススメ
544デフォルトの名無しさん:2005/06/11(土) 16:19:27
#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)))
ちょっとは現実的?
545デフォルトの名無しさん:2005/06/11(土) 17:00:02
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;
}
546デフォルトの名無しさん:2005/06/11(土) 17:12:35
#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));
547544:2005/06/11(土) 17:36:56
>>546
お見事。拍手。
548デフォルトの名無しさん:2005/06/11(土) 18:08:51
いや、そんなんされてもうれしくないし
549デフォルトの名無しさん:2005/06/11(土) 18:32:42
いやいや、使わせて貰います。
550デフォルトの名無しさん:2005/06/11(土) 18:34:21
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;
551デフォルトの名無しさん:2005/06/11(土) 21:10:16
2進<->16進が出来ない人っているの?
552デフォルトの名無しさん:2005/06/11(土) 21:16:10
おまいら、もう4にいってるの?
使ってるバージョンと理由を教えてくれ

俺はいまだに3.3.3だが・・・
理由は、3.3.3で満足してるから・・・
553デフォルトの名無しさん:2005/06/11(土) 21:17:21
常用は3.3.5
554デフォルトの名無しさん:2005/06/11(土) 22:55:35
漏れは3.2.3。
深刻な不都合は特にないので、なんとなく。

3.4系は、それまでの自社ライブラリ(特にテンプレート類)にかなり修正加えないと
使い物にならないことがわかってるし、面倒なので評価が固まるまで保留してる。
555デフォルトの名無しさん:2005/06/11(土) 23:01:42
3.3.6 があるでよー
556デフォルトの名無しさん:2005/06/12(日) 16:55:40
stdlibc++ 6
が見つかりもはん!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

どこにありますか。
557デフォルトの名無しさん:2005/06/12(日) 16:59:25
libstdc++ じゃなくて?
558デフォルトの名無しさん:2005/06/12(日) 18:32:07
なんとなく4.0.0を使ってみたくなって、
cygwin上でビルドしてみたけど、いたるところでエラーでてビルド停止。
悪戦苦闘の末にやっとこ、ビルド完了したけど。
最初のConfigureでいくつかオプション設定し忘れて、結局使わずじまい...
559デフォルトの名無しさん:2005/06/12(日) 20:23:09
cygwin上で使うばかもいるんだな
Intelのコンパイラ買えよ
560デフォルトの名無しさん:2005/06/12(日) 21:55:50
gcc4もメジャーバージョンアップの割にあんまたいしたことないな
561デフォルトの名無しさん:2005/06/12(日) 21:59:18
え?なんで?

もうちょっと勉強してきてくれ。
562デフォルトの名無しさん:2005/06/12(日) 21:59:55
561は559へ
563デフォルトの名無しさん:2005/06/12(日) 23:45:14
PCH他の期待視されてた機能の大半が商用コンパイラ未満の性能しか発揮しなかったらか…
旧コードとの互換性って意味でも厳しいし。

クロスコンパイル環境が欲しい場合には、他に選択肢が無いのは確かだが、
4系を使うまでもない…つーか使ってらんない。
564デフォルトの名無しさん:2005/06/13(月) 00:21:40
俺はWindowsとGNU/LinuxではIntelのコンパイラ使ってんぞ?
あれほどすごいものはないとおもう
CPU作ってるメーカが出すコンパイラと
オナニーしながら、利腕1本で書いてるコンパイラの違いだってまさに思う
565デフォルトの名無しさん:2005/06/13(月) 00:36:38
とりあえず564はオナニーするときに利き腕は使わないということが
理解できた。
566デフォルトの名無しさん:2005/06/13(月) 00:53:07
ここにいるやつらは、Intelのコンパイラが買えないから
gcc使ってるやつらが9割5分でしょ

WindowsのPBMWは20万ちょいだし
Linuxのだと10万弱
他にも、ツール系買ったとして80万弱
最小限のツールで50万強

てきとうなもん作れば、こんくらいすぐ儲けられるけど
ちょっとしたもんもつくれないやつらが使うのがgcc
567デフォルトの名無しさん:2005/06/13(月) 01:34:24
>>566
世の中 Windows や x86 の仕事ばかりではないので。

あと gcc やら Linux やらの開発者がボランティアばかりだと思ってるなら、
お目出度すぎ。ボランティアもいるが、企業が金出してプロの開発者を投入
してるのも多い。

大企業による体の良いダンピングで、泣いてる企業も多いが、今さら言っても
詮無きことだ。一個人としては、せいぜい流れに乗るまで。
568デフォルトの名無しさん:2005/06/13(月) 02:16:02
>あと gcc やら Linux やらの開発者がボランティアばかりだと思ってるなら、
>お目出度すぎ。ボランティアもいるが、企業が金出してプロの開発者を投入
>してるのも多い。
こいつのほうがおめでたいな
569デフォルトの名無しさん:2005/06/13(月) 02:36:06
目次だけよんで
本を読破したつもりになってるようなひとだろうね
570558,561:2005/06/13(月) 02:56:01
WindowsでわざわざCygwin使ってる理由なんて大体推測できるでしょ。
そしたら、あなたたちのような、瞬時に数百万も稼ぎ出す方々なら、
必然的にGCC使う理由もわかると思うんだが。

ましてや、Windowsネイティブなコードはかせるだけなら、
フリーでも他に選択肢あるわけだし。
571デフォルトの名無しさん:2005/06/13(月) 03:09:01
>>564 の、言ってる意味がわからない奴が
どんなコードを書いてるのか気になるな
572デフォルトの名無しさん:2005/06/13(月) 03:10:36
>>570
職業プログラマにGCC使ってる奴はそういないと思うぞ
なにより、そいつが本当の職業プログラマで
その危険性に気づかない奴は糞
573デフォルトの名無しさん:2005/06/13(月) 03:21:02
危険性って?
574デフォルトの名無しさん:2005/06/13(月) 03:21:18
IBMのRational Software ArchitectとかWebSphere Studio Device Developer
とか買うとWindows版でも標準コンパイラはgccだけどな。
575 ◆XK.9xdN07w :2005/06/13(月) 03:26:17
>>573
ソイツが何をいいたいか俺はしらんが
俺はコンパイラになに使ってるのかばれるのは危険だと思う
そのコンパイラ固有のバグを一斉に突かれるからな
しかも、ソース出てるんだからその回りのソース読めば
他にも突けるところを、比較的探しやすい
576デフォルトの名無しさん:2005/06/13(月) 04:11:13
>>575
使ったコンパイラの種類がバレないようなコンパイラってあると思ってんの?
577デフォルトの名無しさん:2005/06/13(月) 04:56:12
自分で自分のウザさに気がつかないのは池沼
578デフォルトの名無しさん:2005/06/13(月) 08:17:38
マック最高!
579558,561,570:2005/06/13(月) 10:42:02
>>572
いや、だからさ。
WindowsでCygwin使う意味、というかCygwinの存在意義ってなによ?
それ考えれば、GCCを使わないといけないシチュエーションもわかると思うんだが...

ちなみに俺は職業プログラマだよ。
もちろんGCC(も)使ってる。
580デフォルトの名無しさん:2005/06/13(月) 11:06:08
どざ氏ね
581デフォルトの名無しさん:2005/06/13(月) 11:09:10
またよくわからない流れにー。
582デフォルトの名無しさん:2005/06/13(月) 11:29:10
職業プログラマですがgccメインですよ
メインプラットフォームがLinuxですから

それがGNUクオリティ
583デフォルトの名無しさん:2005/06/13(月) 12:28:09
GCC が最強
584デフォルトの名無しさん:2005/06/13(月) 12:33:24
EGCS みたいに GCC 最適化コード生成プロジェクトみたいのできないかな。
585デフォルトの名無しさん:2005/06/13(月) 12:47:32
ICC が GCC より早くて当り前だろ。
Intel 自身がアーキテクチャ開発してるからってのもあるが、
アーキテクチャの仕様の詳細まで公開してるわけでない。非公開部分もある。
だから GCC の i386メンテナは ICC を Hack するしかないという罠。
586デフォルトの名無しさん:2005/06/13(月) 14:46:23
もうICCの話題はいいじゃん…
587デフォルトの名無しさん:2005/06/13(月) 15:47:22
>>585
レス見てたら
誰もおまえのように頭が回る奴はいないみたいだけどな
自分で職業プログラマでgcc使ってるとか言ってる奴は
アフォかと思うね

まぁ、Linuxって言ってる時点でどの程度の頭か理解できるけど
588デフォルトの名無しさん:2005/06/13(月) 15:50:48
>>576は、逆アセンブルして うぎゃーーとか言ってるひと?
大体ヘッダ付加しないオプションがある商用コンパイラと言うものを知らないのか?
あ、GCCが最高とか言ってるやつだからか
すまんね
589デフォルトの名無しさん:2005/06/13(月) 15:54:48
ほっといてやれよ
世の中には自分が知ってることが全てで
自分のいってることが全て正しいと思ってる奴もいるんだから
レス見てたらわかるだろ?
このスレにはそういう奴の巣
590デフォルトの名無しさん:2005/06/13(月) 15:55:35
犬糞板いってやれや
591デフォルトの名無しさん:2005/06/13(月) 17:20:39
あぼ〜ん推奨ワード教えてくれ
592デフォルトの名無しさん:2005/06/13(月) 17:28:05
>>591
593プロプラなんてイラネ:2005/06/13(月) 18:06:43
この板に来るべきでない奴が、たびたび書き込みしてくる件について

GCC 関連の話題以外は(゚听)イラネ
594デフォルトの名無しさん:2005/06/13(月) 18:09:58
じゃあ、俺がgccの話題を振ってやる
gccのソースってなんでここまで暗号っぽいんだ?
知合いのプログラマにコンパイラのソースもよまへんで
最適化を語るなっていわれたから読んでるんだが
こんなの読めるだけで神だな
知合いのプログラマは読んでなくても俺にしたら神だが
595デフォルトの名無しさん:2005/06/13(月) 18:14:46
最適化技術の勉強のためにコンパイラのソース嫁ってのはわかる理屈だが、
GCCはそれ以外の部分も凄まじい事になってるしなあ。
ソースコードが手に入るのは確かだが、参考になるかって言われると
色んな意味で微妙だぞ。

漏れも以前クロスコンパイラ用意するときに仕方なく読んだが、もう二度とやりたくない。

パッチパッチパッチの嵐、
方々でルールの統一がとられてない、
元がCとは思えないマクロ固めの変態新造言語による謎ソース、
動的に構成されすぎるmakefile


…うなされたよ。
こと最適化に関する部分だけなら、ある程度ターゲットを絞れば
なんとか読めるのかもしれないけどさ。
596デフォルトの名無しさん:2005/06/13(月) 18:22:53
$ 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 になると思っていたのだが..
597デフォルトの名無しさん:2005/06/13(月) 18:25:55
>>594,595
なにをいまさら言ってるのかと、小一時間(ry
598デフォルトの名無しさん:2005/06/13(月) 18:26:20
ほんとだ、なんで8じゃないんだ?
char tmp[0];
の罠かと思ったけど違うし
599デフォルトの名無しさん:2005/06/13(月) 18:28:46
俺は、gccのソースが理解できるのは当り前だと思うが?

俺の中で、これが読めたら神っていうのは
VMだな、回りは読めてもハードシミュレートなんて暗号と言うか
まったく知らない言葉、読むもなにも何をしてるのかが理解できん
600598:2005/06/13(月) 18:32:21
やっぱり
char tmp[0];
か、
さっきなんで違うと思ったんだろう
601デフォルトの名無しさん:2005/06/13(月) 18:33:14
なんで7じゃいけないのかが判らん。
#いや、勿論8でもいいと思うが。
602デフォルトの名無しさん:2005/06/13(月) 18:36:47
__attribute__((packed))をつけたら、
char[7]と同じという意味になるんじゃないのかと。
603デフォルトの名無しさん:2005/06/13(月) 18:41:44
>>601>>602のアホはなにいってんの?
604デフォルトの名無しさん:2005/06/13(月) 18:46:40
iccとvcのソース読んだことあるけど両方とも整然としてて読みやすかったよ。
あの高度な最適化がきれいなソースから生まれているのは明らか。
605デフォルトの名無しさん:2005/06/13(月) 18:52:59
たいして面白くない事書いてるんだから
もうちょっと、面白可笑しい文面で書いたりはできないか?
606デフォルトの名無しさん:2005/06/13(月) 18:59:31
>>603
えー、なんでじゃあ7で間違ってると思うんだ?
607デフォルトの名無しさん:2005/06/13(月) 19:18:02
>>603
気になるからはよ答えれ。bus errorが出るようなCPUだと
8になるのかもしれないが、386じゃどう考えても7にしか思えないんだが。
608デフォルトの名無しさん:2005/06/13(月) 19:42:35
A.「1+1が2だ」
B.「ほんとだ。なんで3じゃないんだ」
C.「おまえらアホか」
重要:Cは1+1が2であることを否定してない。
609デフォルトの名無しさん:2005/06/13(月) 19:44:23
はぁ?死ねよ>>608
610Thinking Time!:2005/06/13(月) 19:52:16
ちゃんと代入もできるぞ!
↓こんな感じで

buf.tmp[0] = 'w';
611デフォルトの名無しさん:2005/06/13(月) 19:53:57
levelof(このスレ)=0
612デフォルトの名無しさん:2005/06/13(月) 19:56:26
>>610
それってchar aの領域に書き込んでるんじゃなくて?
どうでもいいけど、アセンブルしてその結果について話合えよ。

レベルとかそんなの以前にバカすぎなんだよ。

>>611
バカ認定するまえに、ちゃんとした回答与えろよバーカ
613デフォルトの名無しさん:2005/06/13(月) 19:57:19
この構造体の定義の仕方ってコンパイラによってはエラー返すよ。
614デフォルトの名無しさん:2005/06/13(月) 20:01:51
規格書嫁

俺は規格書もってないからK&Rを読んだが
配列サイズ0のときは書いてなかった
俺役立たずwwwwwwwwww
615デフォルトの名無しさん:2005/06/13(月) 20:03:09
>それってchar aの領域に書き込んでるんじゃなくて?
>どうでもいいけど、アセンブルしてその結果について話合えよ。
>レベルとかそんなの以前にバカすぎなんだよ。

バカで無い>>612様が、↓次で詳細な解説します。
616デフォルトの名無しさん:2005/06/13(月) 20:04:26
↑何もいえない知った蚊野郎の必死のレスの見本
617デフォルトの名無しさん:2005/06/13(月) 20:05:23
GCCにおける要素数0の配列についてマジレスしていいの?
618デフォルトの名無しさん:2005/06/13(月) 20:06:10
>>617
OK
619デフォルトの名無しさん:2005/06/13(月) 20:07:25
説明はできないが現象を確かめただけの >>616
620デフォルトの名無しさん:2005/06/13(月) 20:07:42
サイズ0の配列がどうコンパイルされるかに正解があるわけねーだろバカ
621デフォルトの名無しさん:2005/06/13(月) 20:09:07
>>619
Cの言語仕様なんてしらねーもんwww

じゃあ説明してもらいましょうか。にげんじゃねーぞ禿
622デフォルトの名無しさん:2005/06/13(月) 20:09:25
バカで無い>>620様が、↓次で詳細な解説します。
623デフォルトの名無しさん:2005/06/13(月) 20:09:49
info嫁
C Extensions -> Zero Length のところな。
624デフォルトの名無しさん:2005/06/13(月) 20:10:32
>>596
7でいいと思うよ
tmp[0]は領域取られないですよ

ヒント:パツキン美女でもタルドルだとちょっとやだよね
625デフォルトの名無しさん:2005/06/13(月) 20:10:52
>>622
詳細な説明なんてないっつってんだろバカ
626デフォルトの名無しさん:2005/06/13(月) 20:13:41
マジレス。

長さ0の配列はGCC拡張だヴァーカ

$ gcc -O4 -Wall -pedantic foo.c
foo.c:5: warning: ISO C forbids zero-size array `tmp'
627デフォルトの名無しさん:2005/06/13(月) 20:14:49
おまいら、>>623の指摘でこの議論は終わりだ
628デフォルトの名無しさん:2005/06/13(月) 20:16:28
>>626はパツキン美女
629デフォルトの名無しさん:2005/06/13(月) 20:16:53
なんだか随分いびつながらも変なチームワーク出てきたなこのスレ
630デフォルトの名無しさん:2005/06/13(月) 20:18:57
>>624
メンバの tmp[0] と a のポインタアドレス見たら同じだった。
alias みたいな物になるのかな? > tmp[0]
631デフォルトの名無しさん:2005/06/13(月) 20:20:36
なんで >>598が最初に答えてくれてんのに
こんなにあれたの?
アホなのか?
632デフォルトの名無しさん:2005/06/13(月) 20:21:00
パツキン美女 (;´Д`)ハァハァ
633デフォルトの名無しさん:2005/06/13(月) 20:23:20
levelof(このスレ)=-300
634デフォルトの名無しさん:2005/06/13(月) 20:26:24
>>630
パツキン美女みたいなものです
TEL番ゲットしたのに「現在使われておりません」みたいな
実態が無い、幻の存在
635デフォルトの名無しさん:2005/06/13(月) 20:29:11
GCC 神降臨。>>624 = >>634
636デフォルトの名無しさん:2005/06/13(月) 20:34:31
>>623
サンクス。
http://www.sra.co.jp/wingnut/gcc/gcc-j.html#Zero%20Length
しかしなあこのGCC拡張。かえって分り難くないか?

>>631
598のどこが答えなんだ?なんの答えにもなってないだろwww
637デフォルトの名無しさん:2005/06/13(月) 20:35:56
他人をバカ呼ばわりするだけが生きがいの奴らが使うコンパイラ
それがGCC。GNUクオリティwww
638デフォルトの名無しさん:2005/06/13(月) 20:42:51
>>636
答えになってるだろ?
そこを指定してるんだから
そこを触ってみて、どう動くかを実際に見たら
そのinfoがわかる

文を読んでも何の連想もできない
文字しか読めないひとなのか?
639デフォルトの名無しさん:2005/06/13(月) 20:45:39
>>638
なんの後ろめたさもなくそんなレスしてんの?
640デフォルトの名無しさん:2005/06/13(月) 20:48:03
>>638
そんな態度ばっかとってるから、幻のTEL番しかゲットできないんだよ
もう少し謙虚に生きれ
641デフォルトの名無しさん:2005/06/13(月) 20:50:47
うんこーーー

おまえらうんこぉーーー!!
642デフォルトの名無しさん:2005/06/13(月) 20:52:13
>>636
>http://www.sra.co.jp/wingnut/gcc/gcc-j.html#Zero%20Length
>GNU C では長さが 0 の配列を使うことができる。これを構造体の最後の要素として置き、実際には可変長となるオブジェクトのヘッダとして使うことができる。
It's cool!
643デフォルトの名無しさん:2005/06/13(月) 20:54:16
普通にヘッダのポインタにヘッダのデータ長を足し算する方が
ソース的にも分りやすい!
644デフォルトの名無しさん:2005/06/13(月) 20:54:41
>>642
やっぱり、GCC の仕様は素晴らしいな。 GCCハカー カコイイ!
645デフォルトの名無しさん:2005/06/13(月) 20:54:59
ソースをGPL汚染させるだけじゃ飽き足らずGNU C拡張汚染までさせる気か。
GNUってほんとやることが汚いよな。
646デフォルトの名無しさん:2005/06/13(月) 20:55:37
>>641
漏れうんこ
647デフォルトの名無しさん:2005/06/13(月) 20:56:37
でもGCCは2進数の存在を拒否しますよ
648デフォルトの名無しさん:2005/06/13(月) 20:57:59
ICC最強
649デフォルトの名無しさん:2005/06/13(月) 20:58:07
>>645
>GNU C拡張汚染
この謎の文章について
650デフォルトの名無しさん:2005/06/13(月) 21:00:37
>>647
(゚д゚)ハァ?

GCC よりもまず日本語の勉強が必要かと。
651デフォルトの名無しさん:2005/06/13(月) 21:12:32
時期gcc5.0では2進数どころか、N進数(まあおそらくアルファベットの
数に制限されそうだが・・・)の表記をサポートを致します。
なんちゃって
652デフォルトの名無しさん:2005/06/13(月) 21:23:23
36進数は地味に便利なので良く使う
653デフォルトの名無しさん:2005/06/13(月) 21:31:57
数字の桁を再帰的に表現できるなら何桁でもいけるな。
カッコで一つの桁を表す。
N1000_3(N10_980)(N8_50)
みたいに。なんのことだか分らんかww
654デフォルトの名無しさん:2005/06/13(月) 21:40:07
進数表記の部分も任意のn進数で表現できた方がいいな。
最終的に10か16で表現されるところに落ち着けば、処理系が
解釈に困ることはないはず。多分。
655デフォルトの名無しさん:2005/06/13(月) 22:40:30
64進数はよく使わない?
656デフォルトの名無しさん:2005/06/13(月) 22:47:53
うーん、あんまし。


ゲームとか作ってると1024進数とかよく使うんだが、うは漏れだけwwwwwww

な希ガス。


36進とかは地味に使うね。
使うっつーか、使っちゃってるというか。
657デフォルトの名無しさん:2005/06/13(月) 22:50:04
36って何?10+26でテキスト化とか?
658デフォルトの名無しさん:2005/06/13(月) 22:52:48
英数62文字以外に何使う? Base64と一緒?
# 個人的にはBase64の文字の選定にはちと納得がいかない。
# -と_と.なら納得できたんだが。
659デフォルトの名無しさん:2005/06/13(月) 23:00:16
>>657
0〜9,A〜Zまでで一桁
女神転生風のパスワード作成にお勧め
660デフォルトの名無しさん:2005/06/13(月) 23:08:16
パスワードをさらにmd5sumに通して使ってる俺はアフォですか?
661デフォルトの名無しさん:2005/06/14(火) 04:36:47
>>656
1024進数って何?どう使ってるの?
662デフォルトの名無しさん:2005/06/14(火) 23:46:43
>>660
辞書攻撃に強くなるので悪くない。

だがスレ違いだ。
663デフォルトの名無しさん:2005/06/15(水) 00:10:53
>>661
ぶっちゃけて固定小数点。
1000の近似値で2の10乗なので、精度的に手ごろで直感的でもあると。

少し前のゲーム機とかだと、ラジアンを4096(14ビット)で表して、
符合1ビット、回転数念のために1ビット、計16ビットで回転表現とかやってたけど、関係なさ杉。
664デフォルトの名無しさん:2005/06/15(水) 00:46:59
10bit幅つーのはシフトするときに扱いにくくないか?

と思ったけど最近のCPUならあんまし関係ないか。



665デフォルトの名無しさん:2005/06/15(水) 01:01:28
4096は14bitではなく12bit。
で、16進3桁で表せる点が(人間にとって)ほんの少し便利。
0x1000が4Kで、いろんなCPUで仮想記憶のページサイズだったり。
666デフォルトの名無しさん:2005/06/15(水) 03:43:40
48進数というのは微妙に使い勝手が悪いことで有名
そういえばケンシロウ進数パッチのgcc版がsourceforgeにあったな
667デフォルトの名無しさん:2005/06/16(木) 01:20:34
xeon用の最適化オプションてある?
-march=xeonとかさ。
668デフォルトの名無しさん:2005/06/16(木) 02:03:08
XeonのアーキテクチャがIntelのどの系統なのかは知ってる?
669 ◆fZOaF4CQP6 :2005/06/16(木) 17:23:29
いつも、
-std=c99
とやってる俺は軟弱者?
670デフォルトの名無しさん:2005/06/16(木) 17:42:09
>>669
それなら、-pedantic とか -Werror も付けとけ。
671 ◆fZOaF4CQP6 :2005/06/16(木) 17:53:04
-Wallはやってる
おまえらの普段使ってるオプションは?
672デフォルトの名無しさん:2005/06/16(木) 17:55:20
-pipe
673デフォルトの名無しさん:2005/06/16(木) 18:02:27
-酸素
674デフォルトの名無しさん:2005/06/16(木) 18:25:09
C99ってANSI凖規なんだ
別の企画かと思ってたよ
675デフォルトの名無しさん:2005/06/16(木) 18:49:38
C99とANSIの意味を教えて
676デフォルトの名無しさん:2005/06/16(木) 18:52:58
ぐぐれ
677デフォルトの名無しさん:2005/06/16(木) 19:01:02
ここで聞いてるんだから
ここで説明しろよボケ
678デフォルトの名無しさん:2005/06/16(木) 19:09:59
>>677
どうせ暇なニートなんだから、自分で調べろよ。
679デフォルトの名無しさん:2005/06/16(木) 19:18:22
おまえが調べてかけよボケ

働いててもそんくらいしか役に立ってないだろボケ
680デフォルトの名無しさん:2005/06/16(木) 19:25:51
>>675
ANSIはアメリカの工業規格で、日本でいえばJISみたいな機関。
ここでC言語仕様の標準化作業を行っています。
言語の仕様なので、見直し作業が必要で、その改訂作業の年をとって、
仕様の名前を決めてるの。
つまり「C99」は、99年にANSIで標準化されたC言語の仕様なんだよ。
681デフォルトの名無しさん:2005/06/16(木) 19:38:42
>>679
ニートだということは否定しないらしい
682デフォルトの名無しさん:2005/06/16(木) 19:39:30
>>690 C99はANSIじゃなくていきなりISOで規格化されたよね。
683デフォルトの名無しさん:2005/06/16(木) 19:40:08
ったく、この程度のことにもったい振りやがって…さっさと答えとけボケ
684682:2005/06/16(木) 19:42:06
間違えた。690じゃなくて>>680だ。
685デフォルトの名無しさん:2005/06/16(木) 20:11:51
えぇ?
じゃあ、C05とかもあるの?
1番新しいのがC99ってこと?
686685:2005/06/16(木) 20:19:40
マニュアル読んだら
1番新しいのがC99みたいですね
gnu99ってのもあるみたいですね

C99の前がC89みたいなので
10年毎に更新するのですか?
687デフォルトの名無しさん:2005/06/16(木) 20:25:48
JISは5年に1回見直すけど見直しの結果は「承認/改訂/廃止」のいずれかで、
「承認」なら規定内容は変わらない。
ISOも同様なら10年に1回とは限らない。
688デフォルトの名無しさん:2005/06/16(木) 20:32:36
C95があるね。文法的にはC89と同一で、ライブラリが追加されただけのはずだけど。
689デフォルトの名無しさん:2005/06/16(木) 20:47:44
gccとg++の 違いを教えてください。
マジで。
690デフォルトの名無しさん:2005/06/16(木) 20:50:23
man みろよ

ってか、g++のmanは空だったが
なんだこれ?
691デフォルトの名無しさん:2005/06/16(木) 20:59:19
gccにはPascalのコンパイラはいってないの?
692デフォルトの名無しさん:2005/06/16(木) 21:09:55
>>691
検索ぐらいしたら?
693デフォルトの名無しさん:2005/06/16(木) 21:24:19
ここで聞いてるんだから
ここで説明しろよボケ
694デフォルトの名無しさん:2005/06/16(木) 21:30:53
マンドクセ
695デフォルトの名無しさん:2005/06/16(木) 22:57:57
入ってないだろ。
GNUのPascalはGPC。
よってスレ違い。
696デフォルトの名無しさん:2005/06/17(金) 06:08:25
ったく、この程度のことにもったい振りやがって…さっさと答えとけボケ
697デフォルトの名無しさん:2005/06/17(金) 15:06:19
森にお帰り。
698デフォルトの名無しさん:2005/06/17(金) 18:40:10
このスレはボケばっかりだなボケども。
699デフォルトの名無しさん:2005/06/17(金) 21:29:43
そーですね
700デフォルトの名無しさん:2005/06/17(金) 22:48:26
gpcって一度gccに入りそうになったのにな。
701デフォルトの名無しさん:2005/06/18(土) 01:20:33
なんでわけられてるの?
コンパイラ コレクションなんだから
いれたらいいのに
702デフォルトの名無しさん:2005/06/18(土) 01:27:19
gpcがボーランド互換とか過激な方に走っているからじゃないかな。
703デフォルトの名無しさん:2005/06/18(土) 01:36:24
fortranもobj-cもjavaも要らないよ。c/c++だけで十分。
704デフォルトの名無しさん:2005/06/18(土) 03:10:47
それはお前の主観だろ
死ねよ
705デフォルトの名無しさん:2005/06/18(土) 03:26:35
>>704
そっくりそのままお返ししとくよ
706デフォルトの名無しさん:2005/06/18(土) 03:32:00
>>704
で?
707デフォルトの名無しさん:2005/06/18(土) 03:41:23
>>705
>fortranもobj-cもjavaも要らないよ。c/c++だけで十分。
これはたしかに君の主観だと思うよ
使う人がいるからあるんだし、それだと
ccとかc++
でいいじゃん、
708デフォルトの名無しさん:2005/06/18(土) 03:48:26
ボケ、バカ、カスばっか
709デフォルトの名無しさん:2005/06/18(土) 03:49:36
そーですね
710デフォルトの名無しさん:2005/06/18(土) 04:02:53
意訳:
fortranもobj-cもjavaも使えないよ。c/c++覚えるだけで手一杯。
711デフォルトの名無しさん:2005/06/18(土) 04:07:03
>>709
君は水商売に向いてるな。今度一緒に飲もうか。俺のおごりで
712デフォルトの名無しさん:2005/06/18(土) 16:32:39
おまいら、そんなに全部入りなGCCが好きなのか。
今後際限なくコンパイラの種類が増える方向にあっても良いと?

バラバラで良いでしょって意見は確かに主観だが、全部入りで
良いでしょってのも間違いなく主観だ。もしかして気付いてない?
713デフォルトの名無しさん:2005/06/18(土) 17:41:05
>>712
そんなことはGCCのチームに言ってくれ。
714デフォルトの名無しさん:2005/06/18(土) 18:50:13
コレクションなんだから集めるのは当り前だろ
こいつらはgccがコンパイラだと思ってるのか?
gccじゃなくて、必要なコンパイラだけ入れようとは思わんのか?
おもわなんだったら文句いうなよ
715デフォルトの名無しさん:2005/06/18(土) 18:59:23
>>714
コレクション ってのは後付け設定じゃん
716デフォルトの名無しさん:2005/06/18(土) 19:00:53
そもそもgccはコンパイラだったんだよ
でもいろいろあってコンパイラ衆の親分になったもんで
語呂合わせでコレクションになったわけで
STVのSTはサンタのST って言ってんのと同レベルなんだよな
717デフォルトの名無しさん:2005/06/18(土) 19:09:54
>>714
そうだね。
この際PascalやModula-3やD言語のコンパイラとライブラリ一式も入れるべきだ。
718デフォルトの名無しさん:2005/06/18(土) 19:15:25
後付けだろうとなんだろうといまはそうなんだから
それに従えよ
文句をいうんだったら使わなきゃいいだけ
719デフォルトの名無しさん:2005/06/18(土) 19:18:37
>>718
ガタガタ言ってんなよ
gcc様がfortranなんざコレクションに加えねぇってんだから
それに黙って従っとけ
720デフォルトの名無しさん:2005/06/18(土) 19:29:50
Fortran入ってんじゃん…

Adaもかなり長い間別配布だったけど、安定して中に入ったよね。
gpcはまだまだ安定しそうにないし。ISO Pascalだけならもう大丈夫だけど。
721デフォルトの名無しさん:2005/06/18(土) 19:34:13
D言語も入れてくれえええええええええっ
722デフォルトの名無しさん:2005/06/18(土) 21:37:22
Pascalは方言著しいし、機能的にも既に配布に含まれるAdaという化け物言語が完全に上行ってしまってるしなあ…。
Borland拡張の是費もあるけれど、拡張が無ければ今更魅力も無いのも事実。
(C++が既にあるのに今更構文互換性すらないBCPLを入れようとしてるようなものでは…)

またDは本家のバージョンアップ攻勢を見るに言語仕様が安定するまでまだ数年はかかると思われ。

というわけでここはひとつ、OCaml希望。
723デフォルトの名無しさん:2005/06/18(土) 21:45:57
Javaが入るくらいだから、
技術的にはLisp, Prolog, ML系も入れられるだろうけど、
GCはBoehm GCオンリーだね。コンサバGCじゃないとかなり大幅な改造。
724デフォルトの名無しさん:2005/06/18(土) 22:04:43
考えてみれば、なんでそんな何でもかんでもGCCに固まっちまうんだろうな。
GxCでxにDでもPでも好きに入れればいいだろに。
725デフォルトの名無しさん:2005/06/18(土) 22:26:00
コード生成、最適化の部分を共有したいからでしょ。
726デフォルトの名無しさん:2005/06/18(土) 22:45:50
C#も仲間に入れてください。
727デフォルトの名無しさん:2005/06/18(土) 23:48:31
gcc.gnu.org落ちてる?-D_FORTIFY_SOURCE とやらについて知りたかったんだが…
http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
728デフォルトの名無しさん:2005/06/19(日) 00:09:03
>>727
落ちてないよ。gcc4のバッファーオーバーフロー保護関係です。
729デフォルトの名無しさん:2005/06/19(日) 16:42:50
結局4てコード速くないんでしょ。なんかがっかり。
730デフォルトの名無しさん:2005/06/20(月) 00:32:38
コンパイルが速いんじゃないっけ?
731 ◆E7Ph/CEOhs :2005/06/20(月) 02:37:15
C言語で "-O" オプションで最適化する奴
何でお前等は "-O" に頼るんだ?
C言語ってのはコードを書く奴が工夫して速く動くコードを書くもんだろ?
コンパイラが速く動くバイナリを吐かないとかなじゃなくて
おまえらが速く動くコードを吐けよ

それがいやならお前が最適化コードをかけよ
それなら文句ないだろ
その最適化コードで実際に最適化したバイナリの速さがおまえの限界
所詮おまえはそんな程度
コード書くのやめてサラリーマンでもやってろ
732デフォルトの名無しさん:2005/06/20(月) 02:48:24
>>731

つ BCC32
733デフォルトの名無しさん:2005/06/20(月) 02:49:58
>>731
いいこといった!!
734デフォルトの名無しさん:2005/06/20(月) 03:12:38
ちょっと待て、大抵のプログラマーってサラリーマンじゃないのか・・・
735デフォルトの名無しさん:2005/06/20(月) 03:20:49
プログラマーじゃない上にサラリーマンな俺は最下層か……
736デフォルトの名無しさん:2005/06/20(月) 06:55:08
gcc4.1コンパイル速度が速くなった。
737デフォルトの名無しさん:2005/06/20(月) 07:59:16
>>734
たいていのプログラマは奴隷です。
738デフォルトの名無しさん:2005/06/20(月) 09:14:47
>>735
趣味でやってるならかなり、いいご身分だと思うんだけど...
739デフォルトの名無しさん:2005/06/21(火) 10:28:11
>>731
おー、そうか。
ループ展開やら switch のテーブル化やら
関数呼び出しの委譲やら末尾再起最適化やら
お前は何から何まで全部手でやるんだな。
保守も全部お前がやれよ!
740デフォルトの名無しさん:2005/06/21(火) 11:00:48
なに? このばか
人生がんばれな
741デフォルトの名無しさん:2005/06/21(火) 20:22:13
>>740
喪前はコーディングをがんばれ。
人生は頑張らなくてよい。
742デフォルトの名無しさん:2005/06/21(火) 23:42:16
がんばらなかったからこんなんになれたんだよ
人生がんばってたらプログラマなんてならなかった
743デフォルトの名無しさん:2005/06/22(水) 14:45:20
それは言えてるな
744デフォルトの名無しさん:2005/06/23(木) 13:56:31
>>731
-Oはコードチェックの為のオプション。
lint(とかその類)使ってれば必要無いけどな。
745デフォルトの名無しさん:2005/06/23(木) 14:39:44
ハァ
746デフォルトの名無しさん:2005/06/23(木) 15:59:45
また書き込みが少なくなってきたな
>>744見たいな馬鹿もいることだし荒してみようかな
747デフォルトの名無しさん:2005/06/23(木) 16:19:00
なぜscanfを使うなと低能は言うのでしょうか?
748デフォルトの名無しさん:2005/06/23(木) 16:26:22
>>747
scanfにはバッファオーバフローを防ぐ手段が無いからじゃないかな
よくわかんないけど
749デフォルトの名無しさん:2005/06/23(木) 18:02:35
無い?どんな時?
750デフォルトの名無しさん:2005/06/23(木) 19:29:55
>>747
スレ違いです。
751デフォルトの名無しさん:2005/06/24(金) 14:23:34
GCCの4.0ってどうなのよ。
752デフォルトの名無しさん:2005/06/24(金) 18:07:58
gcc4はバッファオーバーフロー検出してくれないの?

char buf[6]; scanf("%s", buf);

とかを実行した時
753デフォルトの名無しさん:2005/06/24(金) 18:31:26
>>752
うまくgccにからめたね
754デフォルトの名無しさん:2005/06/24(金) 18:50:08
誰もコンパイル時の話をしてないだろ
実行時のことを考えろばか
入力のサイズチェックしないで行くとあふれるかもしれんだろ

しね
755デフォルトの名無しさん:2005/06/24(金) 19:42:30
>>754
スレ違い
756デフォルトの名無しさん:2005/06/24(金) 21:25:08
char buf[6]; scanf("%5s", buf);
757デフォルトの名無しさん:2005/06/24(金) 21:40:37
分かってない人は答えなくていいです
758デフォルトの名無しさん:2005/06/24(金) 22:56:41
プゲラッチョ
759デフォルトの名無しさん:2005/06/24(金) 23:44:34
>>747
formatに必要の無いもんも書けてしまうとか、同じ理由でデバッグしづらいとか
改行をスペースと同じ扱いになるのも問題だと言うのも聞いたな。
まぁスレ違いだが
760デフォルトの名無しさん:2005/06/25(土) 13:27:10
%5なら5文字しか取らないということも知らずに
scanf()は絶対にオーバーフロー防止手段がない!とか言ってた
自称「職業プログラマ」には笑った。

まさに学校で教えてもらった知識そのまま
学校行かなきゃ何も出来なかった、
自分で調べるということすら出来ないバカだけある
761デフォルトの名無しさん:2005/06/25(土) 13:28:05
スレ違い
762デフォルトの名無しさん:2005/06/25(土) 13:30:37
>>760
揚げ足取りっぽくなっちゃうけど
%5 は 6文字分のバッファが必要だよ

>>759
「formatに必要のないもん」って何ですか?
まぁスレ違いだが
763デフォルトの名無しさん:2005/06/25(土) 13:48:39
大きなnopのフル時計
764デフォルトの名無しさん:2005/06/25(土) 15:14:28
いまはもう動かない〜♪
765デフォルトの名無しさん:2005/06/25(土) 15:56:24
おGさんの時計
766デフォルトの名無しさん:2005/06/25(土) 21:33:08
>>760
すれ違いだけどおまえの方が痛いかも
固定文字列の入力なんて無いだろ?
大体scanf使うときなんて、ユーザによって違う文字列をもらう
コードかいたことないのか?
767デフォルトの名無しさん:2005/06/25(土) 21:54:38
問題なのは「意図しない状態でも」安全かどうかであって、
固定かどうかなど問題ではない。

scanfでも安全
768デフォルトの名無しさん:2005/06/25(土) 22:46:41
GCCのレベルってここまで下がったんだ
769デフォルトの名無しさん:2005/06/25(土) 22:46:55
>>767
%dに対してアルファベットを入力されたらどうしましょ。
770デフォルトの名無しさん:2005/06/25(土) 23:00:39
gccってglibcとnewlibの他は何が使えるんだっけ?
771デフォルトの名無しさん:2005/06/25(土) 23:03:14
>>769
返り値をチェックすればいいじゃん。0なら読めてないからどうにかする。

めんどくさ。
772デフォルトの名無しさん:2005/06/25(土) 23:05:41
>>769
scanf の戻り値をみて失敗しているようなら
'\n' までgetchar でバッファをクリアすればよし
773デフォルトの名無しさん:2005/06/25(土) 23:06:31
そういう、考えることは大事だな。

ある便利な関数ばかり使うと、エラー処理の仕方もわからないバカばっかりになるから
774デフォルトの名無しさん:2005/06/25(土) 23:10:20
お前らC初心者スレ池よ
低能っぷりに合わせて懇切丁寧に教えてやっから
775デフォルトの名無しさん:2005/06/25(土) 23:15:10
>>774
初心者は scanf を使いこなせないから
初心者スレはふさわしくないよ

scanf は使いこなすものではない
と言うのならここで続けて欲しい
776デフォルトの名無しさん:2005/06/25(土) 23:25:03
バカがバカの言う「scanfとgotoは使うな」というバカ論を刷り込まれた結果がこれ。
単に、バカだから使い道がわからない、回避の方法も考え付かなかっただけのこと。
将来的には使うことがなくなったとしても、そのノウハウとか考え方は
必ず良い方向に蓄積されていく。
バカはバカの言うことを真に受けてますますバカになっただけ。
777デフォルトの名無しさん:2005/06/25(土) 23:28:30
gotoは使うなとはいわないけど
極力使って欲しくないな
読みづらくなる

scanfは使って欲しいな
入力のチェックさえしたら何の問題もない
778デフォルトの名無しさん:2005/06/25(土) 23:30:17
goto
エラー処理にこれほど威力を発揮するものはねえぞ


問答無用だし

いいよな問答無用って

語呂がいい
779デフォルトの名無しさん:2005/06/25(土) 23:32:03
多重ループ抜けるときとかな。
780デフォルトの名無しさん:2005/06/25(土) 23:34:35
もうエラーだってわかってんだから面倒なことをする必要ねえ
ダイレクトにすっ飛ばすほうがラク


それでも最初はgotoに対して言い訳コメントかいてたもんだ
gotoアレルギーある奴がいたから


/* これこれこういう理由でgoto */
781デフォルトの名無しさん:2005/06/25(土) 23:34:42
ロートルC厨って他にやることがないのか新しいことを覚えるのが億劫なのか知らんけど
こういう不毛でワンパターンなやり取りが大好きだよな。
782デフォルトの名無しさん:2005/06/25(土) 23:35:43
>>776
お前言葉は悪いがいい事言うな
783デフォルトの名無しさん:2005/06/25(土) 23:37:55
最初ッから楽をしてはいかんのですよ!!!!!!!!!!!!!!!!!!
784デフォルトの名無しさん:2005/06/25(土) 23:39:16
>>747の答えは>>776でFA?
785デフォルトの名無しさん:2005/06/25(土) 23:43:11
危険なものとして認識しているのなら、いくらでも使っていい。
(仕事は別)
危険だとわかっていれば、「どういうときに使えばいいのか」ということを考える。
そうしていくと、「どういうときに使えば安全かつ便利か?」ということがわかってくる。
そうすりゃしめたもの。


てか初心者スレかここは。
786デフォルトの名無しさん:2005/06/26(日) 00:00:34
>>785
私はどう危険なのか(危険じゃないのか)知りたいの
問題を回避する方法があるなら
それは(語弊あるけど)問題じゃない

(仕事は別)な理由を知りたい

この手の論争って>>785みたいのが
要点をぼかしちゃうからだめなんだ
分かるならちゃんと書いてクレヨン

その後に(scanfが本当に危険だと分かれば)
>危険だとわかっていれば
の方へ進むんだから
787786:2005/06/26(日) 00:04:00
連続でこめん

gets なんかはプログラマがいくらがんばっても
バッファオーバーフローの可能性がある

scanf にはプログラマがいくらがんばっても
解決できない問題があるか知りたいってことね
788デフォルトの名無しさん:2005/06/26(日) 00:05:56
ない
789デフォルトの名無しさん:2005/06/26(日) 00:08:10
仕事の場合は、完全に回避方法がわかっていない限り使うべきではない。
テストの場ではないのだから。
790デフォルトの名無しさん:2005/06/26(日) 01:06:21
>>786
> gets なんかはプログラマがいくらがんばっても
> バッファオーバーフローの可能性がある
そんなことはない。
791デフォルトの名無しさん:2005/06/26(日) 01:07:50
( ´д)ヒソ(´д`)ヒソ(д` )
792デフォルトの名無しさん:2005/06/26(日) 01:12:38
system関数でシェル呼び出してバッファサイズを自前で制御してやるとか?
別の問題がありそうな。

まあfgetsでとってきてsscanfが一番安全だと思うけど。
793デフォルトの名無しさん:2005/06/26(日) 01:13:25
> (仕事は別)な理由を知りたい
ヒント:まともなのはおまえだけ。他は全員無能。
794デフォルトの名無しさん:2005/06/26(日) 01:14:20
でたw
一番アホなやり方ww
バッファが溢れた場合誤動作してしまう最悪なコーディングwww
バカ丸出しwwww
795デフォルトの名無しさん:2005/06/26(日) 01:21:08
ソフトウェア開発技術者持ちだけど、何か質問ある?
796デフォルトの名無しさん:2005/06/26(日) 01:33:06
仕様書ってどれくらい詳しく書けばいいんですか?
797デフォルトの名無しさん:2005/06/26(日) 01:36:59
>>794
fgets()で取り込んだ場合は、strchr()で'も使って\n'が取り込まれてるかチェックすれば良いだけだけど。
ああ、別に buf[strlen(buf) - 1] != '\n' でもいいよ。

>>796
プロジェクトにもよるし相手にもよる。
たとえば、ここでこの変数に何を代入して・・・みたいなのをいちいちエンドユーザーさんに見せないでしょ。
機能の概要をしっかり書くことが大事。
798デフォルトの名無しさん:2005/06/26(日) 01:41:48
'\n'付けてくれるんだったっけ?
799デフォルトの名無しさん:2005/06/26(日) 01:43:26
ダセーw
バッファ溢れの対策した事無いのバレバレww
標準ライブラリすら把握してないそのアホッぷりwww
恥の上塗り恥ずかしすぎーwwww
800デフォルトの名無しさん:2005/06/26(日) 02:07:10
>>798
そう。
取り込んだ文字列をそのまま使うならそのへんは意識する必要アリ。
atoi()やatof()で変換する分には'\n'は無視されるから問題なし。 

全部取り込みたかったらgetchar()でヒープ領域に取りこみながら
realloc()してもいいけど、あんまり美しくない罠。


まあCに限定しなければ大体これでやってるけどな。
std::string str;
std::getline(cin, str);
801デフォルトの名無しさん:2005/06/26(日) 02:11:04
776 名前: デフォルトの名無しさん [sage] 投稿日: 2005/06/25(土) 23:25:03
バカがバカの言う「scanfとgotoは使うな」というバカ論を刷り込まれた結果がこれ。
単に、バカだから使い道がわからない、回避の方法も考え付かなかっただけのこと。
将来的には使うことがなくなったとしても、そのノウハウとか考え方は
必ず良い方向に蓄積されていく。
バカはバカの言うことを真に受けてますますバカになっただけ。
802デフォルトの名無しさん:2005/06/26(日) 02:50:51
>>800
ちょっとまった
\nつけてくれないパターンもありょ
803デフォルトの名無しさん:2005/06/26(日) 03:02:36
>>802
ごめん、EOFの場合もあったね。
暫く叩いてなかったから忘れてた。

Windowsでなら、キーイベントクラックしてキー入力を捨てて警告音鳴らすようなインターフェイスとか
よく採用するけど標準関数でバッファを制御する方法って無かったよね
804デフォルトの名無しさん:2005/06/26(日) 03:40:22
atoi()やatof()に数字でないものを渡すと何が起きるか分からないんじゃなかったっけ
805デフォルトの名無しさん:2005/06/26(日) 04:09:10
806デフォルトの名無しさん:2005/06/26(日) 05:21:26
未定義かどうか判断するのに
処理系がどういう実装してるか引用したって何の意味もないだろ
見るならJIS X 3010とかにすれ
807デフォルトの名無しさん:2005/06/26(日) 05:22:20
ってここはgccスレだから
gccが別途振る舞いを保証していれば何の問題もないのか
808デフォルトの名無しさん:2005/06/26(日) 05:45:09
規格も究極的には無意味だしね。
規格よりも(将来規格に取り込まれる)共通の独自拡張が先行してる例もあるし、
C++なら満たしてないやつのほうがむしろ多い。
ちゃんと依存だと割り切って使うならalloca()だろうとsystem("stty -echo")だろうと使っていいと思うよ。


経験則的に、機種依存だからといってOSのAPIを叩くのを嫌い、ANSI関数・コンソールアプリだけに
拘る奴は結局何も高度なアプリケーションが書けなかったりする。

MFCだろうがGtk+だろうがSwingだろうが用意されたライブラリを軽々操れる香具師のほうが
順応性が高い。
809デフォルトの名無しさん:2005/06/26(日) 05:53:02
どうでもいいが
atoiをアトイ
atofをアトフ
とか言う奴を見るとすげえムカつく
810デフォルトの名無しさん:2005/06/26(日) 07:30:31
なんてよむの

ってかスレ違いだから移動よろ
811デフォルトの名無しさん:2005/06/26(日) 07:31:55
まあstrtol/strtoul/strtodだな。strtollとか。
812デフォルトの名無しさん:2005/06/26(日) 08:40:09
ここは偉そうに語ってるくせにまともに標準入力から読み込むコードすら書けないアフォのすくつですね
813デフォルトの名無しさん:2005/06/26(日) 08:44:48
別に標準入力から読み込む必要ないし。エディトコントロールからだし。
814デフォルトの名無しさん:2005/06/26(日) 08:44:56
書いてみて
815デフォルトの名無しさん:2005/06/26(日) 09:25:07
char buf[256];
printf("イレテミロ(255モジイナイ)"); gets(buf);
816デフォルトの名無しさん:2005/06/26(日) 09:32:38
ひらがなを200文字入れたらバグりました
817デフォルトの名無しさん:2005/06/26(日) 10:24:05
ワロチ
818デフォルトの名無しさん:2005/06/26(日) 10:26:18
エンコーディングをMSX-JPにすればひらがな200文字入るよ
819デフォルトの名無しさん:2005/06/26(日) 19:28:43


char buf[256];
printf("イレテミロ(255モジイナイ)"); fgets(buf, sizeof(buf), stdin);
820デフォルトの名無しさん:2005/06/26(日) 19:29:34
821デフォルトの名無しさん:2005/06/26(日) 19:49:46
何の対策もしていないscanfのバツファオーバーランを目に見える形で表したいのですが
なんかいい方法ありませんか。


明らかにオーバーさせても大概何事も無かったかのように処理が進むじゃないですか
822デフォルトの名無しさん:2005/06/26(日) 19:56:36
そもそもオーバーフロー対策にいちいち標準関数なんて使うなよ。
画面入力だけに限定するならそれこそキーイベント破棄すりゃいいだけだろ。
たとえば数値の入力時に非数字の文字を破棄するようにしたほうがエンドユーザーには優しいわけだし。

リモートシステムは知らない。Webベースのフォームでも書くね、俺なら。
823デフォルトの名無しさん:2005/06/26(日) 20:25:52
そーいえばなんでscanfつかっちゃまずいんだっけ
824デフォルトの名無しさん:2005/06/26(日) 20:27:25
>>823
使うとバカがよってくるから
825デフォルトの名無しさん:2005/06/26(日) 20:27:28
ストールマンといえどもバッファオーバーフローが避けられないから。
826デフォルトの名無しさん:2005/06/26(日) 20:44:59
だよもん
827デフォルトの名無しさん:2005/06/26(日) 21:00:07
コーヒーライター
828デフォルトの名無しさん:2005/06/26(日) 21:38:07
おまえらキーイベントキーイベントいうけど
GCCでGUIアプリ作ってるのか?
829デフォルトの名無しさん:2005/06/26(日) 21:45:04
もちろんWindows用はVisual C++で作ってます。
GTK+も似たようなもんだよ。
830デフォルトの名無しさん:2005/06/26(日) 21:47:52
本当にいたんだ
自分はコマンドラインアプリしか作ったことないや
Windowsではコードかいたことはない
831デフォルトの名無しさん:2005/06/26(日) 22:28:23
バカがバカの言う「scanfとgotoは使うな」というバカ論を刷り込まれた結果がこれ。
単に、バカだから使い道がわからない、回避の方法も考え付かなかっただけのこと。
将来的には使うことがなくなったとしても、そのノウハウとか考え方は
必ず良い方向に蓄積されていく。
バカはバカの言うことを真に受けてますますバカになっただけ。
832デフォルトの名無しさん:2005/06/26(日) 22:40:49
後藤は使うがscanfは使わないな。

>>演算子くらいならたまに使う。
833デフォルトの名無しさん:2005/06/26(日) 22:41:04
>>831
お前言葉は悪いがいい事言うな
834デフォルトの名無しさん:2005/06/26(日) 22:43:46
結局誰も完璧に回避できるコードを指さないわけだが
Emacsのコードでscanfのコード見てみ
神共でも この程度の回避方法しかしてないんだぞ?
835デフォルトの名無しさん:2005/06/26(日) 22:45:59
馬鹿は「scanfとgotoは使うな」を使うなとか言うかもしれないが
もっと馬鹿はそいつらをばかにしてるのにまともなコードをかけず
まともな回避方法をしないままそれらを使う
836デフォルトの名無しさん:2005/06/26(日) 22:46:36
>>834
なら貴方が直せば良い
837デフォルトの名無しさん:2005/06/26(日) 22:51:20
>>834を誰か翻訳してくれ
838デフォルトの名無しさん:2005/06/26(日) 22:56:20
オレは・・・scanfは使わないし・・・使おうとも思わないが・・・
もし、もしも 「scanfを使わなければ殺スッ!」 と言われたなら・・・

使わない
839デフォルトの名無しさん:2005/06/26(日) 23:08:58
Emacsのeeの部分見たけど
対策と言う対策はほとんどしてないね
840834:2005/06/26(日) 23:11:04
>>836
この程度とはいったけど
これ以上の方法が俺には思い付くとはいっとらんが?
俺は極力scanfは使うなって言う人だからな

>>837
ごめん
scanfを使ってる部分のコード見てみ
の間違い
841デフォルトの名無しさん:2005/06/26(日) 23:26:14
そのうち世界中のブラウザの穴がふさがってきてネタの尽きてきたSecuniaあたりが
セキュリティホールをデッチあげてくれますよ
842デフォルトの名無しさん:2005/06/26(日) 23:26:27
全部読むのメンドイから誰かfgetsでもおきうるオーバーフロー問題とやらを1から解説してみてくれ
843デフォルトの名無しさん:2005/06/26(日) 23:35:58
>fgetsでもおきうるオーバーフロー問題
急にどうした?
844デフォルトの名無しさん:2005/06/26(日) 23:44:24
だから、「getsは使うなfgets使え」はさんざん聞かされてきたが、ここ見るとどうやらfgetsも安全じゃないらしいが。
845デフォルトの名無しさん:2005/06/27(月) 00:01:06
お前等すれ違い
Cのスレに行け
846デフォルトの名無しさん:2005/06/27(月) 00:03:58
回避という姿勢が既にバッドノウハウですよ。
847デフォルトの名無しさん:2005/06/27(月) 00:46:09
>>844
どこ見てそういう結論に達したんだよ
848デフォルトの名無しさん:2005/06/27(月) 01:07:08
結局、fgetsなら問題ない、でFAだろ。
849デフォルトの名無しさん:2005/06/27(月) 01:08:03
794 名前:デフォルトの名無しさん[] 投稿日:2005/06/26(日) 01:14:20
でたw
一番アホなやり方ww
バッファが溢れた場合誤動作してしまう最悪なコーディングwww
バカ丸出しwwww

↑こいつはキチガイということでFA?
850デフォルトの名無しさん:2005/06/27(月) 01:29:21
スレ嫁よキチガイ
851デフォルトの名無しさん:2005/06/27(月) 03:53:03
>>770
uclibc
852デフォルトの名無しさん:2005/06/27(月) 10:00:50
>>846
それは言わないお約束

>>848-849
FA
853デフォルトの名無しさん:2005/06/27(月) 10:44:09
fgetsは溢れた分を読み捨てるにしてもスルーして次にまわすにしても
誤動作の原因になることが多いし
Cではそういう無自覚orいいかげんなコーディングがとても多いな。
854デフォルトの名無しさん:2005/06/27(月) 10:47:07
>>853
1-3行程度の例キボン
855デフォルトの名無しさん:2005/06/27(月) 10:48:29
>>854
fgetsは問題ないと言う例を
1-3行程度でキボン
856デフォルトの名無しさん:2005/06/27(月) 10:52:53
>>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]で行読み込むコードとかね。
857デフォルトの名無しさん:2005/06/27(月) 10:59:53
>>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);
858854:2005/06/27(月) 11:26:34
>>855
必要?ネタ?ちょっとワカランので保留
>>856
ありがと
なるほど確かに多いな。俺はそんなコードは書かないが
scanf の方がよっぽど安心だ
>>857
ありがと
859デフォルトの名無しさん:2005/06/27(月) 11:28:25
何文字までなら正常な動作をするかっては仕様の範疇ですよ。
脆弱性は潰し解いた方がいいけどね。
860デフォルトの名無しさん:2005/06/27(月) 11:36:11
ソース中にばら撒いてあるマジックナンバーを仕様とは言わないだろ。
誤動作=脆弱性でもないし。
このなあなあな文化がCクオリティ。
861デフォルトの名無しさん:2005/06/27(月) 12:35:21
仕様に書かれていないのに10000文字突っ込んだら誤動作するようなソフトは
ベンダーに文句言って対応させるのが普通。
(まぁ仕様書に「一行は127文字まで」とか追記されるだけな場合が多いけどな)
862デフォルトの名無しさん:2005/06/28(火) 01:05:14
scanfにしても、「ラインバッファであること」なんてどこにも一言も書かれてないのに
なぜかUNIX時代からラインバッファ


UNIXがラインバッファ方式だったからか
863デフォルトの名無しさん:2005/06/28(火) 01:06:52
大抵のソフトは2Gもつっこみゃ死ぬと思うがな。
864デフォルトの名無しさん:2005/06/28(火) 01:11:22
そりゃCのメモリ管理がうんこちゃんだからだろ
865デフォルトの名無しさん:2005/06/28(火) 01:35:49
>>863-864

何の根拠も無いあなたたちの価値観で世の中のソフトを
貶めるのは止めてください。
866デフォルトの名無しさん:2005/06/28(火) 01:40:37
違うだろ
こいつらが技術がないだけ
867デフォルトの名無しさん:2005/06/28(火) 02:39:31
Cで書かれたアプリは信頼性が低く無用な制限があり
セキュリティーホール突かれまくりの誤動作しまくりってことでFA?
868デフォルトの名無しさん:2005/06/28(火) 02:44:42
PerlもRubyもCでかかれているわけだが
869デフォルトの名無しさん:2005/06/28(火) 02:45:28
std::string str;
std::getline(std::cin, str);

これでなんか問題ある?
gccじゃなくてGCC(GNU Compiler Collection)のほうなのでC++もありでしょ
870デフォルトの名無しさん:2005/06/28(火) 02:46:51
標準Cライブラリが脆弱なだけだろ。
getsやsprintfなんて残しておくのが悪い。
871デフォルトの名無しさん:2005/06/28(火) 03:08:39
http://chasen.org/~taku/blog/archives/2003/09/istream.html

こいつCで書くとどんなのになる?もしくは無理?
872デフォルトの名無しさん:2005/06/28(火) 03:10:39
脆弱な例として、getsはともかくsprintfて。
使い方を間違えてるだけじゃん。

配列のサイズチェックを行わない言語仕様に脆弱性がある、
と言っているようなもの。
873デフォルトの名無しさん:2005/06/28(火) 03:26:16
>>872
ヒント:1024バイト
874デフォルトの名無しさん:2005/06/28(火) 03:30:16
まあ、神々がコードで使ってるのは大抵snprintfだな。
875デフォルトの名無しさん:2005/06/28(火) 03:35:14
別に移植性のないsnprintfなぞ使わなくても、
個々のフィールドのサイズを制限するだけで充分な場合がほとんどだが。

sprintf(buff, "%.1000s", str);
を、わざわざ
snprintf(buff, 1024, "%s", str);
にしなければいけない理由は全く無い。
876デフォルトの名無しさん:2005/06/28(火) 03:39:23
で、snprintfを使わざるを得ない場合というのは、
バッファを拡張しながらsprintfを使いたい場合だな。
ヒープに確保したバッファに入りきらないサイズだと判明したら
バッファを広げてもう一度実行するような。
877デフォルトの名無しさん:2005/06/28(火) 08:10:14
>876はフィールド幅が可変だということを認識していないんだろうか。
878デフォルトの名無しさん:2005/06/28(火) 08:16:13
何のことだろう?
まさか%.*のことでもあるまいし。

それ以上に873の意味がどうしてもわからないけど。
俺にはわからないことばかりだよ。
879デフォルトの名無しさん:2005/06/28(火) 08:20:17
>>878
sprintf()で生成できることが保証されているのは1024まで。
880デフォルトの名無しさん:2005/06/28(火) 08:24:28
誰が保証してくれてんの?
881デフォルトの名無しさん:2005/06/28(火) 08:32:37
おー、ありがとう。
初めて知ったよ。

で、とりあえずぐぐってみたけど
「wsprintfには1024バイトの制限があって、sprintfにはそんな制限はない」
というのがトップに来たけど。
http://www.google.co.jp/search?biw=1051&hl=ja&q=sprintf+1024+%E5%88%B6%E9%99%90&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

出来ればどこに載っているのか教えて欲しいのだが。
少なくとも、俺はそんな制限見たこと無いし。

まあ、俺は企画書は読んだこと無いし、
手元にあるK&R2ndに載っていないからって、そんな制限はないと言い切るつもりもない。
printfに制限が無くてsprintfに制限があるのは不自然だとは思うがね。
882デフォルトの名無しさん:2005/06/28(火) 08:35:12
で、フィールド幅可変というのは、やっぱり、どう考えても
%*を知らないとしか思えない。
あるいは、フォーマット文字列にリテラルしか使えないと思っているとか。

万が一↑の通りなら
バカじゃねーのって感じ。
883デフォルトの名無しさん:2005/06/28(火) 08:55:19
gcc関係ないじゃん!

sprintf(3)に長さの制限なんてないけど、
gccにsprintf(3)は含まれてないしね。
884デフォルトの名無しさん:2005/06/28(火) 08:58:01
snscanfがほしいんですが
885デフォルトの名無しさん:2005/06/28(火) 09:08:22
で、>>870(=>>873=>877=>>879)は、
「sprintfのどこが脆弱なのか」という
最初の疑問の答えを示してくれないのでしょうか。
886デフォルトの名無しさん:2005/06/28(火) 09:18:48
で、>>885(=いっぱい)じゃ、
「スレ違いなので移動しろ」という
最初の指示をどうして行動でしめてくれないのでしょうか。
887デフォルトの名無しさん:2005/06/28(火) 09:30:25
何で俺だけ?

他の人がGCCと関係ないscanfやgotoやfgetsの話をしていても
俺は全然書き込まなかったし、その間スレ違いとの指摘も無く
その流れでsprintfの話題が出たから加わったんだよ。
それも、無知に「おまえは無知だよ」といってるだけだから。

スレ違いとの指摘が>>883だとしても
移動しろなんて言われてないよ。少なくとも俺は。
まあ、無知な人はちゃんと反論出来ないらしいし、もうやめるけど。
888デフォルトの名無しさん:2005/06/28(火) 09:35:21
脆弱で誤動作するコードを書き散らしている人間の大半はgccユーザー
889デフォルトの名無しさん:2005/06/28(火) 09:36:09
他の人がやってれば俺はやってもいい
わがまま世代の骨頂だな
釣りにしても、フナ釣りのエサが干物じゃ食いつかんよ

とりあえず、おまえら全員だまれな
890デフォルトの名無しさん:2005/06/28(火) 09:37:48
>>889みたいな仕切り屋気取りの方がうざい
891デフォルトの名無しさん:2005/06/28(火) 09:38:33
>>889
まずおまえが黙れ。
892デフォルトの名無しさん:2005/06/28(火) 09:39:51
はぃはぁ〜〜〜〜〜ぃ
スレ違いだからねぇ〜〜〜〜〜〜〜
ス・レ・ち・が・ぃ !!
893デフォルトの名無しさん:2005/06/28(火) 09:43:08
>>892
ほら、最後に自分が書かない時が済まない。
だからうざがられるのに。
894デフォルトの名無しさん:2005/06/28(火) 09:44:41
×時が済まない
○と気が済まない

>>892>>893スレ違いだよ。いいかげんにしな。
895デフォルトの名無しさん:2005/06/28(火) 09:55:36
スレ違いと指摘するのは、
スレ違いの話をやめさせるためではなく
わざと煽って、よりスレ違いな話題にもっていくため。

>>889>>892より。
896デフォルトの名無しさん:2005/06/28(火) 22:21:41
>>883
libjava, libstdc++はgccに入っているのに、glibcは入らないのな。
897デフォルトの名無しさん:2005/06/29(水) 00:12:25
>>896
libc はシステムコールのエントリポイントやロケール関係も入ってるから、
Linux, GNU Hurd 以外で使うのは激しく面倒だと思われ。

まぁ、ネタとしては、こーゆーのもあるが。
http://www.debian.org/ports/kfreebsd-gnu/
898デフォルトの名無しさん:2005/06/29(水) 06:53:28
libstdc++って将来的にはlibcに依存しない形になるの?
899デフォルトの名無しさん:2005/06/29(水) 07:09:22
libstdc++/libioなんかみると、そういう傾向はあるけど、
全面的に抱えることはないんじゃない?
900デフォルトの名無しさん:2005/06/29(水) 12:24:36
コンパイルの際にスタティックリンクでコンパイルするにはどのオプションをしているればよいのでしょうか?
901デフォルトの名無しさん:2005/06/29(水) 12:32:05
>>900
マニュアルは読みましたか? そのまんまのオプションがありますよ。
プラットフォームによっては、どうしてもスタティックリンクできない
ものもあるけどね。
902デフォルトの名無しさん:2005/07/02(土) 20:31:32
MicroSoft社のコンパイラにある /Zpオプションのようなものはないのでしょうか?
903デフォルトの名無しさん:2005/07/02(土) 20:33:42
904デフォルトの名無しさん:2005/07/02(土) 20:41:55
>>903
/Zpがなにかわかってないだろ
905デフォルトの名無しさん:2005/07/02(土) 21:39:55
>>903
知ったか乙
906903:2005/07/02(土) 22:24:42
>>904 なんでそう思うの?
907デフォルトの名無しさん:2005/07/02(土) 22:39:51
>>906
謎。>>903 はあるともないとも書いてなくて、単に情報源を示しただけなのにな。

ちなみに
/Zp[n] pack structs on n-byte boundary
だそーだ。
908デフォルトの名無しさん:2005/07/03(日) 01:15:05
俺は>>902が/Zpオプションが何か分かってない可能性ありと見たぞ!
909デフォルトの名無しさん:2005/07/03(日) 04:58:52
struct foo foo __attribute__ ((aligned (4));
910デフォルトの名無しさん:2005/07/03(日) 08:33:31
コンパイラオプションで一括定義。
ソース中の変数宣言してる個所で逐一指定。

一見するとコンパイラオプションは便利なようだけど、
これってオプションによって動いたり動かなかったりする
ソースが出来上がるってことでしょ?マクロで対応する方が
正しいよね。

ところで>>902はあるのかないのか聞いてるんだから
「ない」と一言言えばいいんじゃないの?
911デフォルトの名無しさん:2005/07/03(日) 08:49:55
>>902 ある。
912デフォルトの名無しさん:2005/07/03(日) 08:59:20
これかな?
-Fpack-struct[=n]
他にも-falign-XXX=n ってのがいくつかあるけど
913デフォルトの名無しさん:2005/07/03(日) 09:12:08
>>909は型の属性と変数の属性をごっちゃにしてない?
それはfooという変数を4byte境界に配置するっていうだけで、
struct fooについてはなんの指定にもならないはずだけど。
914デフォルトの名無しさん:2005/07/03(日) 11:06:15
structの定義のところで各メンバにaligned()を入れるんだっけ?
915デフォルトの名無しさん:2005/07/03(日) 11:49:59
916デフォルトの名無しさん:2005/07/03(日) 15:44:19
>>909,913-915
なんで aligned の話になってるんだよ。
"pack structs on n-byte boundar" なら packed だろ。
917デフォルトの名無しさん:2005/07/03(日) 16:58:49
YOYOYOYO
藤井ブラボー

あ あのブラボーじゃなくてブラザーなんですけど

ブゥラボーって習ったんだよ

あっあっブラボーですブラボー



それはよしとして、GCCはコンパイルコンパイラネームを隠すことは絶対に出来ないのか?
GCCである以上、誰かが作ればできるだろ?
商用でしかできないとかいってるアホもおるけん。。。。
918デフォルトの名無しさん:2005/07/03(日) 17:03:55
>>917
コンパイラネームってどこに載ってるんだっけ
ちょっとお姉さんに教えなさい
919デフォルトの名無しさん:2005/07/03(日) 17:04:50
コンパイリンガーなんですけど、
920デフォルトの名無しさん:2005/07/04(月) 06:35:40
>>916
>>915はpackedのページじゃない…
921デフォルトの名無しさん:2005/07/04(月) 07:29:21
intなどの大きさは機種に依存しますが、どのマシンでも、32ビットの整数になるような型を使いたいのですがどうしたらよいのでしょうか?
922デフォルトの名無しさん:2005/07/04(月) 07:44:55
>>921
c99だったら
#include <stdint.h>
923デフォルトの名無しさん:2005/07/05(火) 01:00:19
gcc2.95.4 だとワーニングだけどコンパイル通って、gcc4.1 だとエラーになる
様なのがいくつか有るんですが、何かオプション等で以前のバージョンの様に
振舞わせて互換性を保つことは出来ないでしょうか。
924デフォルトの名無しさん:2005/07/05(火) 01:04:07
>>923
ウォーニングもエラーも取ってコンパイルすればすべて解決
925デフォルトの名無しさん:2005/07/05(火) 01:14:48
>>923
モノによってはあるが、ソースを変える以外に方法がないのもある。
926デフォルトの名無しさん:2005/07/05(火) 03:08:12
なんでバージョン変えてんのに以前のものがいいって
わがまま言ってんの??
927デフォルトの名無しさん:2005/07/05(火) 07:50:46
boostは標準では使えないのでしょうか?別途インストールをしないといけないのでしょうか?
928デフォルトの名無しさん:2005/07/05(火) 08:08:36
>>927
yes
929デフォルトの名無しさん:2005/07/05(火) 10:58:30
>>927
そんなことよりgcc4.0.0にはまだ正式には対応していない。
930デフォルトの名無しさん:2005/07/05(火) 18:08:14
export 実装キボンヌ
931デフォルトの名無しさん:2005/07/06(水) 11:45:19
大昔


ワーニングってのはバグがあるけど文法としては間違ってないってことだから
そのまんまで出すと必ずセキュリチーに問題が出る
だからワーニングあるソースは認めない


といわれました
932デフォルトの名無しさん:2005/07/06(水) 12:26:25
>>931
思い出話を語りたいなら鼬害。そうでないならこちらへどうぞ。
http://pc8.2ch.net/test/read.cgi/tech/1118072681/
933デフォルトの名無しさん:2005/07/07(木) 06:28:10
経過時間を計測したいのですが、プロセッサ時間依存の方法ですと、マルチスレッドのプログラムの
経過時間がうまく計測できません。clock()以外で、ミリ秒まで取得する方法を教えてください。
934デフォルトの名無しさん:2005/07/07(木) 07:35:01
スレ違い
935デフォルトの名無しさん:2005/07/07(木) 18:54:33
>>933
知ってるがマルチには教えない。
936デフォルトの名無しさん:2005/07/07(木) 22:10:56
マルチレスッドな>>933
937デフォルトの名無しさん:2005/07/08(金) 07:45:33
そこでQueryPerformanceCounter()ですよ

938デフォルトの名無しさん:2005/07/08(金) 15:03:40
ChangeLog にどこかの団体や国に対して排斥するような思想的なこと
書いたらだめだよっておかあさんが言ってた。
939デフォルトの名無しさん:2005/07/08(金) 15:05:13
gccってどうしてこんなに最適化が弱いの?
開発者の頭が弱いから?
940デフォルトの名無しさん:2005/07/08(金) 15:10:20
>>939
gccの最適化をあてにすることよりも、まず自分のアルゴリズムを見直してみたら?
その方がずっと前向きですよ。
941デフォルトの名無しさん:2005/07/08(金) 15:12:57
最適化が弱いってほかのコンパイラの最適化の結果と
逆アセンブルして比べたってこと?
弱いところが或のなら、報告してみるなり
自分で修正してパッチ送るなりしてみては?
942デフォルトの名無しさん:2005/07/08(金) 15:39:54
>>939
違う。gccはあらゆるCPUをターゲットにコアが書かれているから、x86に
特化した最適化はしにくいと、gccのメインチーフがインタビューで言って
いたぞ。

URLは失念したが、まだ残ってるはず。
943デフォルトの名無しさん:2005/07/08(金) 15:49:21
URLを失念したの?
944デフォルトの名無しさん:2005/07/08(金) 15:52:17
>>938
これの事か?

Inappropriate ChangeLog entry
ttp://gcc.gnu.org/ml/gcc/2005-07/msg00285.html

パッチした人が(略)な国の人だからこんな事するのかなぁ。
こんな事するなんて、なんか悲しいよね。
945デフォルトの名無しさん:2005/07/08(金) 15:57:49
お前らもなんか仕込んでこいよ。やられっぱなしだから舐められるんだよ。
946デフォルトの名無しさん:2005/07/08(金) 16:01:26
舐められたんだったらくわえてやれよ
947デフォルトの名無しさん:2005/07/08(金) 16:24:53
むしろ、こんな思想を煽っている黒幕が誰なのかに興味があるな。
948黒幕:2005/07/08(金) 16:27:13
なにかごようでござるか?
949デフォルトの名無しさん:2005/07/08(金) 19:13:28
GCC 4.0.1 Released!
950デフォルトの名無しさん:2005/07/08(金) 22:10:41
>>937
それもカーネルによってはマルチスレッドでの測定がうまくいかない罠
951デフォルトの名無しさん:2005/07/09(土) 18:53:18
ここは、私がガオガイガーの名にかけて死守する!
952デフォルトの名無しさん:2005/07/09(土) 19:02:19
ガオガイガーなら GGG じゃないの?
953デフォルトの名無しさん:2005/07/09(土) 19:42:45
んじゃガオカイカー
954デフォルトの名無しさん:2005/07/10(日) 16:01:24
>>944
ChangeLogそのものはどこで読めますか?
955デフォルトの名無しさん:2005/07/10(日) 16:32:09
>>954
嫌中ネタは中国板でどうぞ。
956デフォルトの名無しさん:2005/07/10(日) 16:39:37
バブルで浮かれてるんだろうな。日本人もバブルの頃は相当痛々しかったに違いない。
957デフォルトの名無しさん:2005/07/10(日) 18:26:01
gcc-x.y.3から安定
958デフォルトの名無しさん:2005/07/10(日) 19:12:51
トライXで万全
959デフォルトの名無しさん:2005/07/10(日) 19:35:47
逆光は勝利
960デフォルトの名無しさん:2005/07/10(日) 21:55:19
世界征服の第一歩は練馬から
961デフォルトの名無しさん:2005/07/10(日) 21:57:42
日中韓がいがみあえば得する国があるんでしょう。
962デフォルトの名無しさん:2005/07/10(日) 22:02:45
世界征服セーラー服
963デフォルトの名無しさん:2005/07/10(日) 22:23:23
>>961
ただそれだけでもないような気もする。
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 もダメ。。。
966デフォルトの名無しさん:2005/07/11(月) 13:49:45
>>961,963
日中韓が仲良くなりすぎると面白くないと感じる国がいるのも事実。

ヒント: *
967デフォルトの名無しさん:2005/07/11(月) 13:56:45
>>966
例えそうだとしても中韓の実態があからさまになった以上
関係修復は世代が変わるまでは無理だよ
968デフォルトの名無しさん:2005/07/11(月) 14:12:30
>>967
世代が変わっても、アイツらが変わらない限り無理。
969デフォルトの名無しさん:2005/07/11(月) 20:29:47
臭いスレだな
970デフォルトの名無しさん:2005/07/11(月) 22:48:57
>>966
アとか台とかか
971デフォルトの名無しさん:2005/07/12(火) 00:13:57
>>970
領海に潜水艦突入
EEZで密漁->逃走->国際法を無視して政府が匿う

これらはアとか台の思惑に関係ない
仲良くできるか?
972デフォルトの名無しさん:2005/07/12(火) 00:16:39
>>971
領海に入った奴や匿う政府とは仲良くできないかもしれないが
それ以外の奴らとは会ってみなければ分からない

とりあえず GCC について意見を言ってみた
973デフォルトの名無しさん:2005/07/12(火) 00:19:51
チベットでもGCCが使う自由があるかどうかそれが問題だ
974デフォルトの名無しさん:2005/07/12(火) 00:34:29
おぃおぃ、無駄話ばっかりしてるとスレが埋まっちゃいますよ。
975デフォルトの名無しさん:2005/07/12(火) 02:59:07
なんで
int main(short argc, char **argv)
これだと
warning: first argument of `main' should be `int'
って文句いわれるわけ?

引数の数なんてcharでも十分でしょ
真面目な理由知ってるひといる?
976デフォルトの名無しさん:2005/07/12(火) 03:40:15
>975
intとshortでは、異なる結果になりうるから。
例えばスタックがshortと同じ幅の場合、スタック操作の段階で誤動作する。
977デフォルトの名無しさん:2005/07/12(火) 09:18:33
>>976
違う型ですから。

それからANSI以前のCでは、
charやshortでもintにpromotionされて扱う事が約束されたが、
ANSI Cからは、結果が同じなら実際にはshortで渡す処理系も許容。
つまり定義と宣言に食い違いがあるとまずい処理系が許容されている。
978976:2005/07/12(火) 12:11:26
>>977
漏れに言うな。
979デフォルトの名無しさん:2005/07/12(火) 13:31:16
ワラ
980デフォルトの名無しさん:2005/07/12(火) 15:16:32
981デフォルトの名無しさん:2005/07/12(火) 15:49:14
「つぎスレ」じゃないんだ。
982デフォルトの名無しさん:2005/07/12(火) 15:50:18
じと書いてつぎと読むのは2chの常識
983デフォルトの名無しさん:2005/07/12(火) 16:02:49
じゃあ残りはドルアーガのたから箱の出し方について話し合おうか
984デフォルトの名無しさん:2005/07/12(火) 20:53:46
25階は何が出るんですか?
985デフォルトの名無しさん:2005/07/12(火) 21:46:33
えーと・・・25階ってなんだっけ
986デフォルトの名無しさん
NESでフルコンプするmovieあったよ
おれはソロモンの鍵の方が好きだが