元スレGCCについて part9
gcc覧 / PC版 /みんなの評価 : ○
701 = :
オーバーロードとか考えたけど、面倒なので再現するソースを見せてね
702 = :
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
int main()
{
// コンパイルエラーを試すだけなので第一引数はテキトーな値で
write(0, "Hello World!", 12);
return 0;
}
$g++ test.cpp -o test
$gcc test.c -o test
703 = :
>>702
ヘッダからみてもこれは C のプログラム。
704 = :
>>703
そこはC風にやろうがC++風にやろうが関係ないんじゃないですか?
705 = :
writeの使い方がおかしいのに、何言ってるんだか?
706 = :
エラーメッセージを読まない、あるいは質問時に提示しない人間の頭の悪さが理解出来ない。
708 = :
エラーが出ますとだけ言ってエラーメッセージを書く知能がない奴にプログラミングは無理だろう
709 = :
書けて、エラーが出たら、コンパイラが悪いとか言い出すみたいだけど、最近は
712 = :
>702
write()やclose()はunistd.hだったと思うんだ
man 2 write
man 2 close
713 = :
>>712
ありがとうございます。コンパイル通りました。
716 = :
GCC 4.6リリース、Google Goの正式サポートなど多数の変更点を含む
http://sourceforge.jp/magazine/11/03/28/0518233
717 = :
CentOS5.5でも4.1.2なんだよなぁ。
なんでこんなに遅れるんだろう。
718 = :
>>717
そりゃ .5だからだろう。 五回もマイナーリリースをしたバージョンだから基盤のバージョンは古い。
6.0で4.4になるよ。
719 = :
>>718
とんとん
720 = :
>>717
gcc44 でもいれとけ
721 = :
>>720
いや いれればそれでいんだけど。
なんで古いままなのかなぁって。
722 = :
>>716
最適化の強化がすげーな。今までとかなり違った結果が出そうだ。
723 = :
>>721
> なんで
保守が原則の鳥だから。
遅れてるのではなくもともと新しいのは原則来ない。
Fedora->RHEL->CentOS
724 = :
>>723
枯れ を好むって事ね。
確かに C/C++ コンパイルするのには
全然困らないね。
725 = :
なんか、本質的な部分をわかってなさそう。
わからなくても使えれば構わないんだろうけど。
726 = :
呼び出し規約について質問させてください。
gcc 3.4.5、MinGWを使ってコンパイルしています。
a.c/a.cpp
int __cdecl test(int);
int __stdcall test(int x) { return x };
b.c/b.cpp
int __stdcall test(int);
int __cdecl test(int x) { return x };
上記のようなプログラムを作ってコンパイルしたところ、
a.c b.cでは予期通り
error: conflicting types for 'test'
というエラーが出てくれますが、a.cpp b.cpp はコンパイルが通ります。
-Wallを入れても警告が出ず、mapファイルを見ると
両方とも __stdcall になっているようです。これは何故でしょうか?
また、これらで警告なりエラーなりを出させる方法はあるでしょうか?
727 = :
c++だと、同じ名前でもコンパイルすると違う名前になるからでしょ
728 = :
>>727
int __cdecl test(int x) { return x; }
int __stdcall test(int x) { return x * x; }
こんな事が出来るってこと?
試してないけど流石にコンパイルエラーじゃない?
729 = :
そこまでは知らん。
730 = :
extern C
だっけをつけるんじゃあ
731 = :
Win特有の話だから、詳しいことは知らないが、
config/**の#define TARGET_OS_CPP_BUILTINS()で
builtin_defineされている。__attribute__に。
gccとg++で挙動が違うってことはないはず。
そもそもミスマッチな属性だし。
732 = :
>>728
オーバーロードできるように引数のタイプを符号化して識別子に加えているとかなんとか
734 = :
>>731
linuxでも__attribte__((fastcall))とか使うだろ。
もっともattributeは関数の宣言部でしか使えず、
定義部で付与してもエラーになるはずだから726のような状況にはならないけど
736 = :
確かに両方共stdcallになっちゃってるよこれ
737 = :
名前装飾とアセンブリ出力合ってねえ
ダメだこれ
739 = :
文字列解析が出来ないのかいな?
740 = :
こういうのってマルチコアの排他ってどうしてるんだろうな。
/proc/stat読んでる間に書き換わったりしないのか?
742 = :
ということは1バイトずつreadすると悲惨なことになるのか
743 = :
ファイルポインタ新規作成して入れ替えてたら問題ないけど、実装みないと分からない
744 = :
>>742
ユーザーランド側がどう処理してるかまではみてないけど,
kernel側はおおむねcopy_to_user()でbufferサイズ分一気にわたしてる
つか, デバドラ関係はドライバー依存だと思うが...
やたらサイズがでかくない限りは一気に呼んだ方が安全だと思うよ
745 = :
>>740
もう一回読んで diff 取ってるんじゃね?w
746 = :
>>745
diff とってる間に (略
748 = :
>>745
正解
749 = :
収束するまで繰り返さないと
750 = :
MinGWは、追加includeパスの設定はどうやればできますか。
みんなの評価 : ○
類似してるかもしれないスレッド
- GCCについて part8 (763) - [95%] - 2009/3/11 8:47 ☆
- GCCについて part10 (538) - [90%] - 2018/7/5 20:30
- 【激遅】AppleGCC【絶望】 (111) - [18446744073709551607%] - 2010/1/15 10:31
トップメニューへ / →のくす牧場書庫について