タグ

gccに関するyheldのブックマーク (16)

  • 3項演算子のgcc拡張 - Psychs's blog

    http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=gcc%A4%CE%B3%C8%C4%A5%B5%A1%C7%BD 今日、gcc 拡張で 3項演算子 x ? x : y の最初の返値を省略して x ?: y と書けることを知った。 つまり、ruby で v = x || y || z と書くところを、C でも v = x ?: y ?: z; こんな感じに書けるわけだ。これはいい。 この書き方だと、x や y が一度しか評価されないので、マクロを書くときに便利だと思う。 追記 (2007.9.28) gcc では、|| を使うと 0 か 1 になるので、?: に利用価値がある。 printf("%d", 2 || 4); // => 1 printf("%d", 2 ?: 4); // => 2

    3項演算子のgcc拡張 - Psychs's blog
    yheld
    yheld 2007/11/02
  • GCC 4.0.2 のバグ、Linus の野望を暴く | スラド デベロッパー

    Linux カーネルが Oops と言ったら、まず何を疑うべきだろうか。 Ingo Molnar が procfs まわりで遭遇した問題は、Linus Torvalds の解析により コンパイラのバグであると判明した。 Linus は、原因となった GCC 4.0.2 の最適化バグを「違法行為 (Illegal)」と呼び、 「そんなコンパイラは役立たずのゴミだ」と言い切っている。 Alan Cox に「コンパイラの最適化に関する禁止令なんて存在しないんだから、違法とか言うなよ」と指摘された彼は、 「ああ、俺が世界の支配者になるとき違法になるんだった。ちょっと先走りしすぎたね」と返し、 「支配者になるのは、いつ頃?」という問いに「鋭意奮闘中。なかなか簡単じゃないんだなこれが」と答えている。

  • Matzにっき(2007-09-17)

    << 2007/09/ 1 1. U20プロコン最終審査会 2. 死なないために 3. [Ruby] davidflanagan.com: Nifty Ruby Unicode codepoints utility 2 1. [教会] 第一日曜日 3 1. [Ruby] RubyアソシエーションがRuby言語公式ロゴのデザイン募集:ITpro 2. [OSS] Open Tech Press | GNU GPLv3 日語訳 3. [言語] retlang - Google Code 4 1. Full Disclosure: World's most powerful supercomputer goes online (fwd) 2. [知財] 元麻布春男の週刊PCホットライン - DRMどころかEPNも嫌いだ 3. 取材 5 1. 取材 2. [Ruby] Ruby needs a

  • 値の変更が出来る文字列についての格闘期。 - ボクノス

    ちょっとはまって調べてみたら、もっとはまってしまった・・・。値の変更が出来る文字列についての格闘記。 値の変更について func(char *s) { *s = 'a' } func("moge"); というアホなプログラムを書いてしまった・・・値が変更が出来る訳が無い!! なんとなく気になったので、値の変更について調べることにした。 値の変更について調べてみた。 strcpyで値をコピーしてみる。 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char s1[] = "hoge"; const char s2[] = "piyo"; /* 普通 */ strcpy(s1, "copy"); printf("%s\n", s1); /* 警告は出るけど値の変更はできる */ strcp

    値の変更が出来る文字列についての格闘期。 - ボクノス
  • K&Rを読もう(22) 演習2-1 変数の範囲 - ボクノス

    演習2-1 変数の範囲を調べる問題。 面倒なのでマクロで自動生成してみた。 #include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> #define UCHAR_MIN 0 #define USHRT_MIN 0 #define UINT_MIN 0 #define size(s, t, S) printf("%-15s : %2d byte %2d bit %16" #t "%16" #t "\n", \ #s, sizeof (s), sizeof (s) * 8, S ## _MIN, S ## _MAX) int main(void) { size(unsigned char, d, UCHAR); size(char, d, CHAR); size(unsigned short, d

    K&Rを読もう(22) 演習2-1 変数の範囲 - ボクノス
  • C言語にもboolがあった。 - ボクノス

    最近cflowの便利さに気づいたtanakaです。 % cflow cat.c | grep ':$' | sed 's/<.*//' main() usage() simple_cat() cat() write_pending() next_line_num()コールグラフが一目瞭然でっす。超便利。 便利過ぎなので関数のみ抽出するシェルスクリプト作った。 fflow() { cflow $@ | grep ':$' | sed 's/ <.*//' } やばい。死ねる。 boolって何よ? で、cflowのテストにGNU catのソースを使ってみたら、思わぬ拾い物。 bool ok = true; boolにtrue。なんだコレ? マクロの正体は、 #include <stdbool.h> 調べてみたら、標準Cライブラリの実装 stdbool.hあった。どうやらC99からの新機能らしい

    C言語にもboolがあった。 - ボクノス
    yheld
    yheld 2007/08/05
    うっはwwwすっげぇ便利w
  • [compiler] an introduction to gcc - goinger的日記

    このがなかなか面白かったので、7割ぐらい読んでしまった。 gccコンパイラはよく使用する機会があるけれども、あまり知らない機能が多いことに気がつきました。 このの中でも、11章のAn overview of the compilation process は結構面白いです。普段コンパイルで省略している部分をあえて省略せずに、冗長に実行することでコンパイルの流れを知ることが出来ます。というわけでその内容について少し紹介してみます。 このによると、コンパイルの流れは以下のようになるということが書かれています。 preprocessing (to expand macros) compilation (from source code to assembly language) assembly (from assembly language to machine code) linkin

    [compiler] an introduction to gcc - goinger的日記
    yheld
    yheld 2007/07/28
    linker部分が参考になりました
  • D から Xlib をほげほげしたかった - hogelogの日記

    ウィンドウマネージャー遊びをしたかったので、C の .h ファイルから D のモジュールへの変換 - プログラミング言語 D (日語訳)を参考にしながら Xlib.h を Xlib.d とかに書きかえようと試みて昨日をつぶした。しかも全然うまくいかんかった。つーか X11 プログラミングをしたことも無ければ、D言語プログラミングもしたこと無い身で多少無謀だったかもわからん。 Xlib.h のプリプロセスも、gcc よく知らんから適当にしたし。 % gcc -E /usr/X11R6/include/X11/Xlib.h >Xlib.h % gcc -E -dM /usr/X11R6/include/X11/Xlib.h >Xlib_macro.hとか。めちゃくちゃわかりにくい出力になった。どうも % gcc -E -P -dD /usr/X11R6/include/X11/Xlib.hの

    D から Xlib をほげほげしたかった - hogelogの日記
  • 【インフォシーク】Infoseek : 楽天が運営するポータルサイト

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

  • フリーソフトウェア徹底活用講座(21)

  • GCCで末尾再帰の最適化メモ。 - ボクノス

    忘れそうなのでメモメモ。 gccで末尾再帰の最適化をしたい場合は、 % gcc -foptimize-sibling-calls最適化オプション-O2以上でも有効化出来る。 % gcc -O2安心して再帰が使えるようになりそうです。 参考 フリーソフトウェア徹底活用講座(21) GCC 4.1.0 の最適化レベル(-Ox)による違い

    GCCで末尾再帰の最適化メモ。 - ボクノス
  • 新言語 Xtalを作る日記 - gccでコンパイルすると、異様に遅い

    GCCを入れ替えて、例外がSjLjではなく、Dwarf2-EHで処理されるモノを使ったところ、VCと同じような速度が出ました。 ↓ここから落としました。MinGW GCC with Dwarf2-EH http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=82725&release_id=392771 gcc自体をコンパイルするとき、--disable-sjlj-exceptionsを指定すれば同じのができるんですかね? gccとかぜんぜん使わないんで、あんまりよく知らないんですが、 SjLjの例外は「例外の送出は早いけど、try..catchや、デストラクタを持つオブジェクトのフレームを通るたびにコストがかかる」方式 Dwarf2-EHは「例外の送出は遅いけど、try..catchなどでのコストは0」

    新言語 Xtalを作る日記 - gccでコンパイルすると、異様に遅い
    yheld
    yheld 2007/07/06
  • Matzにっき(2007-06-26) - Steve Yegge、RailsをJavaScriptに移植する

    << 2007/06/ 1 1. [Ruby] 楽天技術研究所フェロー就任の影響 2. [知財] 私的録音録画小委員会、CD売上減と私的複製の関係めぐり議論は平行線 3. [Ruby] 川o・-・)<2nd life - Ruby で debug する7つの方法 4. [Ruby] Rails vs Django: a non biased yet useless comparison 5. [OSS] Dave Gilbert's Weblog : The Badness of JFree 6. [OSS] Trust, But Verify - O'Reilly ONLamp Blog 7. [言語] Scala Actors -- A Short Tutorial 8. [Ruby] taw's blog: Why RLisp will not support Ruby class

  • DSAS開発者の部屋:オープンソースを楽しむエンジニアの一日 〜 コードを楽しく読む工夫

    C言語で書かれたソースコードを読んでいるとき、関数ポインタから呼び出されている機能の実体がどこに書かれているのかを探すのに苦しんだ経験はありませんか? 私はあります、いっぱいあります!! そんなときはどうするかというと・・・ 手順1: まずは気分転換をする! 手順2: そして気合いを入れ直す! 手順3: さらに気力で読み砕く! 手順4: 最後に根性で発見する! これが、ごく一般的な作業手順(?)かと思います・・・(ごめんなさい嘘です) でもまあ、実際にここまで出来れば、そのプログラムの大まかな構成とか癖みたいなものはだいたい把握できているはずなので、他の関数ポインタについてもある程度当たりをつけて見つけだすことが出来るようにはなるかと思います。 ・・・・・が、、できれば気合いと根性を使わずに追えるなら追いたいのが人情ですよね。 straceやltraceを使えばシステムコールやライブラリコ

    DSAS開発者の部屋:オープンソースを楽しむエンジニアの一日 〜 コードを楽しく読む工夫
    yheld
    yheld 2007/06/17
    [あとでhamanoさんをトレース]
  • 404 Blog Not Found:Cで強引にたらいを後回し

    2007年05月22日22:00 カテゴリLightweight Languages Cで強引にたらいを後回し 404 Blog Not Found:λ萌え - たらいを後回しを書いた後、なんとかCでも出来ないかと、車輪の再発明する代わりに横車を押してみた。 GCCにはclosureがある! 実は以外と知られていないが、gccでは無名関数は使えなくとも、closureは使える。最近では無名関数をサポートしている言語が人気ということもあり、また無名関数の多くがclosureとしても用いられているため、無名関数の別名としてclosureという呼び方をすることもあるが(私もときどきやる)。この二つは来は別物である。JavaScriptで書くと、 var outer = 1; var closure = function(x){ return outer++ }; var nonclosure

    404 Blog Not Found:Cで強引にたらいを後回し
  • getlineラブ。 - ボクノス

    アルゴリズムの勉強用にC言語で1行読み込みを作ってみたけど、Rubyの方がずっと早かったorz。原因は、mallocの回数とioのバッファリングにあるような気がして今日はずっとRubyのio.cを眺めてた。ま、よくわからんのでwebを探索。 ・・・素敵なライブラリを発見してしまった。 Manpage of GETLINE なんと、C++のgetlineがC言語にも!! getline() は stream から 1 行全てを読み込み、テキストが含まれているバッファのアドレスを *lineptr に格納する。 "1行全てを読み込み" !! C言語でちゃんと1行読み取るのは結構しんどい。なぜなら、C言語の配列は固定幅だからだ。可変長な文字列を作るためにはmallocして、1文字づつ読んで改行を探して、領域がたりなくなったら、reallocしながら配列を広げるしかない。速度的にもチューンが欠かせ

    getlineラブ。 - ボクノス
  • 1