タグ

cに関するkazuhookuのブックマーク (32)

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    kazuhooku
    kazuhooku 2009/10/08
    あざっす。sudo cpan -i cppref でインストールできます
  • はじめてのにき(2009-06-17)

    1.social media marketing(2014-05-24 03:05) 2.Jlmpvlbv(2014-05-24 03:05) 3.bero(2014-05-24 03:05) search / home / index 全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

  • memologue - C/C++の定数の型の話, C90/C99の差分のびみょーな話

    Cのソースコードに m = 195; とか n = 0xffffffff; とか書いたときの定数(右辺)の型って、なんであるかご存じでしょうか? また、C90(1990年版のISO C言語規格)とC99(1999年版のそれ)ではその型が微妙に異なったりすることがあるんですが、ご存じでしょうか? さらには、お使いのマシンがILP32であるかLP64であるかLLP64であるかによっても、微妙に型が違ってきたりするんですが、それについてはどうでしょうか? えーもちろん、普段は「Uがついてなかったらint, Uがついてたらunsigned intジャネーノ?」くらいの理解でも殆ど不自由しないわけですが、詳細な理解がないとハマるケースも稀にあります。 私はというと、上に書いたような事は、C90/99の差違を除いてはだいたい理解しているつもりだったのですが、C90/99の差異について無頓着だったがため

    memologue - C/C++の定数の型の話, C90/C99の差分のびみょーな話
    kazuhooku
    kazuhooku 2009/06/04
    C99だと、勝手にlong longの定数になるのか
  • 革命の日々! glibc 2.10 news

    元はUlrichのBlog 時期的に考えると、Fedora11/RHEL6用のlibcになるのかな? http://udrepper.livejournal.com/20948.html 以下、要約 ・strchrの実装を変えたよ。 strchrは規格上 char *strchr(const char *, int) のようなプロトタイプをもつけども、これはCがオーバーローディングをサポートしない事による制限で 来は char *strchr(char *, int) const char *strchr(const char *, int) の2つをサポートするべき。gccトリックによってCでこれを実現したよ。 ・C++ 201x support デストラクタを呼ばない quick_exit() とそれ用のat_exit()の変種、at_quick_exit()が追加されたので実装した

    kazuhooku
    kazuhooku 2009/04/19
    スルー力w
  • はじめてのにき(2009-04-16)

    _ long とか printf("%lld\n", (long long)020000000000); printf("%lld\n", (long long)0x80000000); printf("%lld\n", (long long)-2147483648); printf("%lld\n", (long long)020000000001); printf("%lld\n", (long long)0x80000001); printf("%lld\n", (long long)-2147483649); の結果を言える人はえらいと思う。 でまぁこれ関係は標準ちゃんとあるのかなぁ… (02:38) _ あとすこし… ↑の問題は標準とか調べるのかったるいので適当にごまかした。 でも当は INT_MIN とかとかかわるから きちんと調べた方がいいなー。 あとはまぁ少しで tcc

    kazuhooku
    kazuhooku 2009/04/16
    c99 だと規定されてるっぽい? てか -std=c89 と -std=c99 で結果が変わるのかぁ
  • はじめてのにき(2009-03-16)

    _ bitfield typedef struct { unsigned long long a: 1; unsigned long long ll: 50; unsigned int r; } S; に対して S s; s.ll = 0x123456789aULL; がこうなる。 こう長くなっちゃうと 最適化しないコンパイラの方が読みにくいとおもう 8048459: 48 b8 9a 78 56 34 12 mov $0x123456789a,%rax 8048460: 00 00 00 8048463: 48 c7 c1 9a 78 56 34 mov $0x3456789a,%rcx 804846a: 48 89 ca mov %rcx,%rdx 804846d: 89 55 ec mov %edx,-0x14(%rbp) 8048470: 48 89 c2 mov %rax,%rd

    kazuhooku
    kazuhooku 2009/03/16
    Cにおける効率的な split の実装ってどんなのがいいのかな。やっぱバッファ破壊型なのかな>「やっぱ split/join は必要なんだよなぁ」
  • I know I believe in nothing but it is my sweet nothing.:2009年01月08日分

    kazuhooku
    kazuhooku 2009/01/08
    \n がついてたら writev とかかっこいいな... って思ったけど高水準I/Oだたorz >「コンパイラがfwite(3)に書き換え」
  • melancholic afternoon

    kazuhooku
    kazuhooku 2008/12/12
    2828
  • div - odz buffer

    ref:http://blog.bugyo.tk/lyrical/2008/11/cdiv.html 単に最適化の影響じゃね、とか思ったけど、コードをいじって実際にベンチマークをとったら確かに div の方が3倍くらい遅かった。

    div - odz buffer
  • 各種マップ実装の性能比較 - mixi engineer blog

    今回は小ネタのmikioです。key/valueのレコードを高速に格納・参照・削除する仕組みが連想配列とかマップとか呼ばれて親しまれていますが、Tokyo Cabinetのオンメモリマップの性能をC++の各種実装と比較してみました。 以下の実装を対象として、100万レコードの格納と検索にかかる時間を計測します。キーと値は各8バイトの文字列とします。 Tokyo Cabientのオンメモリマップ(TCMAP) STL(C++の標準テンプレートライブラリ)のmapとmulti mapとset GNU拡張テンプレートのハッシュマップ Googleのdense hashおよびsparse hash テストコードはこちらに挙げておきます。具体的な操作としては、マップオブジェクトを生成し、バケット配列の要素数をレコード数と同じにチューニングし、ループを回してレコード群を格納します。なお、STLのマップ

    各種マップ実装の性能比較 - mixi engineer blog
  • memologue - __attribute__((init_priority(N))) で、C++のグローバル変数の初期化順序を制御する

    g++の __attribute__)((init_priority(N)))( なる機能の日語の解説が見当たらないので、いつものように紹介文を書いてみます。これは、C++のグローバル変数の初期化順序を制御するためのGCCの拡張機能(attribute)です。 ごく短い説明 動的な初期化が必要なC++のグローバル変数の定義に__attribute__)((init_priority(N)))(をくっつけると、.oファイル上で、その変数の初期化関数(コンストラクタ等)のアドレスが.ctorsではなく.ctors.M セクションに入ります。M は左0パディング5桁固定の数値で、M = 65535 - N です。あとは、shinhさんの2005/11の記事を。特に、リンカスクリプトのSORTのとこに注目、これにより初期化順がinit_priorityで指定した通りになります。Nが小さい程先に初

    memologue - __attribute__((init_priority(N))) で、C++のグローバル変数の初期化順序を制御する
  • GCC Hacks

    Post to Twitter Post:  GCC Hacks From: alohakun, 3 months ago GCC HacksView SlideShare presentation or Upload your own. (tags: alohakun gcc) osc 2008 do room C 16:00-16:30 SlideShare Link close GCC Hacks osc 2008 do room C 16:00-16:30 2597 views  |  0 comments  |  0 favorites |  14 downloads |  2 embeds (Stats) Share Favorite + Group / Event Download file Categories Add Ca

    kazuhooku
    kazuhooku 2008/06/30
    RMSは、ゆるふわ系
  • 構造体のサイズ違いで悩んだのでリンク時に検出 - memologue

    先日、次のようなC++のクラスが原因で少々悩みました。 struct A { #ifdef V2 int bar_; /* バージョン2以降でしか使わないメンバ変数(らしい) */ #endif int foo_; /* 以下略 */ }; このAを使っている.cppの一部は、g++ -DV2でコンパイルされており、残りは-DV2なしでコンパイルされていたのです。sizeof(A)が異なるオブジェクト同士がリンクされてしまい、まずいことになっていました。たとえば、次のようなa.hと、 // a.h struct A { #ifdef V2 int bar_; #endif int foo_; A(); int getFoo() const { return foo_; } void setFoo(int foo); }; a.cpp, main.cpp を用意して、 // a.cpp #i

    構造体のサイズ違いで悩んだのでリンク時に検出 - memologue
    kazuhooku
    kazuhooku 2008/06/24
    マジでmysqlにほしいな
  • fast strlen and memchr by SSE2 (mitsunari@cybozu labs)

    strlen()とmemchr()のSIMD版を作ってみました. 今回は最速よりもお手軽さを重視したのでアセンブリ言語ではなくintrinsic関数を使っています.そのためVisual Studio 2008, gcc 4.xの両方でコンパイルでき32-bit, 64-bit OS上で動作します. WindowsLinuxでのみ確認していますが恐らくIntel Mac OS X上でも動作するでしょう(sample source). ベンチマークはランダムな長さの文字列の平均長(average length)を変化させつつ取りました.数値は1byteあたりにかかった処理時間比で小さいほど速いことを表します. strlenが3種類(ANSI, BLOG, SSE2)とmemchrが2種類(ANSI, SSE2)あります.BLOGというのは今回試してみようというきっかけになったCounting

  • 評価順序 - odz buffer

    昨日のネタだが、よくよく考えると、評価順序と結合順序がどうこうという話が混じっている気がしてきた。 あともっとシンプルなことをいうと、 ((a + b) + c) + dをどういう順番で評価するかなんて処理系依存で、そのへんの断りをいれないのはどうよ、と。 あと a = (b = (c = d))の評価順序はどうなんだろね、とか。

    評価順序 - odz buffer
    kazuhooku
    kazuhooku 2008/06/06
    「評価順序と結合順序がどうこうという話が混じっている」
  • Download Visual Studio 2005 Retired documentation from Official Microsoft Download Center

    kazuhooku
    kazuhooku 2008/05/22
    VC++ は 2005 からのサポート
  • Fail-Safe C: Top Page

    Fail-Safe C は、メモリ安全性を保証する ANSI C 言語のフルスペックの実装です。 ANSI C 言語の仕様で定められた全てのメモリ操作(キャストや共用体を含む)に対し その安全性を保証し、全ての危険なメモリアクセスを事前に検知し防止します。 Fail-Safe C では、コンパイル時や実行時の様々な最適化手法を組み合わせる ことで、実行時検査のオーバーヘッドの削減を行っています。このコンパイラ を用いることでプログラマは、既存のプログラムを大幅に書き換えたり別の言 語に移植したりすることなく、そのままプログラムを安全に実行することがで きます。 詳細については次の文献もごらん下さい。 Yutaka Oiwa. Implementation of the Memory-safe Full ANSI-C Compiler. ACM SIGPLAN Conference on P

    kazuhooku
    kazuhooku 2008/04/16
    おめ
  • 産総研:プレス・リリース 安全性を確保した実用的なC言語コンパイラを開発

    発表・掲載日:2008/04/11 安全性を確保した実用的なC言語コンパイラを開発 -既存のC言語プログラムにメモリ操作の安全性を付与できる- ポイント 既存のC言語プログラムを書き換えずに、安全性を確保できる実用的な処理システムを開発。 完全なメモリ安全性と日工業規格(JIS)への完全な互換性を両立。 インターネット上でオープンソース・ソフトウェアとして配布開始。 独立行政法人 産業技術総合研究所【理事長 吉川 弘之】(以下「産総研」という)情報セキュリティ研究センター【研究センター長 今井 秀樹】ソフトウェアセキュリティ研究チーム【研究チーム長 柴山 悦哉】の 大岩 寛 研究員は、日工業規格(JIS)や、米国規格協会のANSI C規格互換でメモリ安全性を確保するC言語コンパイラ「Fail-Safe C - release 1」を開発した。インターネット上で用いられるサーバーソフトウ

    kazuhooku
    kazuhooku 2008/04/16
    「大岩 寛 研究員は、日本工業規格(JIS)や、米国規格協会のANSI C規格互換でメモリ安全性を確保するC言語コンパイラ「Fail-Safe C - release 1」を開発」
  • 産総研 RCIS: Fail-Safe C: 安全なC言語コンパイラ

    Fail-Safe C とは Fail-Safe C は、完全な ANSI-C に対するメモリの安全性を保証する実装です。Fail-Safe C は、完全な ANSI-C 規格への準拠 (キャストや共用体を含む) を実現しながら、実行状態の破壊や乗っ取りに繋がる全ての危険な操作を検出し防止します。また、Fail-Safe C は、様々な「dirty trick」――必ずしも ANSI-C で厳密な意味では認められないが、広く一般のプログラマが利用している様々な記述手法――を、安全性を壊さない範囲でサポートしています。 Fail-Safe C では、コンパイル時や実行時の様々な最適化手法を組み合わせることで、実行時検査のオーバーヘッドの削減を行っています。このコンパイラを用いることでプログラマは、既存のプログラムを大幅に書き換えたり別の言語に移植したりすることなく、そのままプログラムを安全に

    kazuhooku
    kazuhooku 2008/04/16
    おめ
  • gcc 勉強会したい - takkan_mのNo planな日常

    今日、ちょっとソースを読む時間があったのですが、ひさしぶりに知らないgccの拡張記法にであいました。 int hoge [] = { [0..10] = 3 }; どうやら、これで配列のindexが0から10までを3にした配列になるようです。いやぁ、gccが独自に拡張記法をもっているって知らずに、いきなりであったらぎょっとしますね(僕は知ってて読んでぎょっとしましたが)。 それから、フリーソフトウェア徹底活用講座をてきとうに眺めていたんですが、gccは変数名に"$"を許してくれるみたいですね。なので、こんなコードも見事にコンパイルしてくれます。 $ cat add.c #include <stdio.h> #define my int my main() { my $a = 4; my $b = 3; my $c = $a + $b; printf("%d + %d = %d\n",$a,

    gcc 勉強会したい - takkan_mのNo planな日常
    kazuhooku
    kazuhooku 2008/02/27
    ちょ Perl でも C でも動くw