のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,905人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレGCCについて part9

    gcc覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - std:map + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    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パスの設定はどうやればできますか。


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / gcc一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - std:map + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について