タグ

cに関するodzのブックマーク (19)

  • C言語(gcc?)の謎の振舞い - 日記を書く [・w・] はやみずさん

    0引数の関数に、引数を渡して呼び出していても、コンパイルエラーを吐かない。なんでだろう。 マルチスレッドなプログラムを書いていて、謎のバグに悩まされており、0引数の関数に引数を1つ渡している(APIを変えたときに更新しわすれた)ところを発見して、それを消したらうまく動くようになったやっぱ動かなかった。あうあう 検証用コード。hogeを0引数で定義しているのに、 gcc -Wall でコンパイルしてもエラーがでない。 #include <stdio.h> #include <stdint.h> void * hoge(){ return NULL; } int main(int argc, char * argv[]){ hoge(100); printf("%d %d\n", (int)sizeof(int32_t), (int)sizeof(intptr_t)); return 0; }

    C言語(gcc?)の謎の振舞い - 日記を書く [・w・] はやみずさん
    odz
    odz 2008/11/06
    引数リストの void の有無について
  • google-perftools(tcmalloc)の使い方 - moratorium

    google-perftools(tcmalloc)の使い方 2007-12-17 (Mon) 22:59 Google OSS PFIでは毎週1人適当な話題で発表しているのですが、この間「GooglePerfToolsの使い方」という軽いお題で発表した資料を公開してみます。メモリ周りの問題は大変ですよね…。 google-perftools - Fast, multi-threaded malloc() and nifty performance analysis tools 肥え続けるTomcatと胃を痛めるトラブルハッカー ローテクなメモリ使用量監視方法 特にC++で長期運用中のメモリリークに苦しんでおられる方には役立つかと思います。基的にドキュメントの日語訳ですが。SlideShareだとなぜか図がずれるので、元ファイルをこちらに置いておきます。 | View | Upload

  • libapr(apache portable runtime) programming tutorial

    INOUE Seiichiro <inoue@ariel-networks.com>2005/8/29 This is a tutorial on how to use libapr(apache portable runtime). 1. Tutorial Availability 2. libapr skeleton code 3. memory pool (apr_pool_t) 4. Error status (apr_status_t) 5. file handling 6. file lock 7. file-system directory handling 8. character string handling 9. time handling 10. command line options 11. memory map(mmap) 12. DSO(Dynamic Sy

    odz
    odz 2007/11/28
  • hogetrace - 関数コールトレーサ - memologue

    でかいソフトウェアの、大量のソースコードを短時間で読む必要が生じたので、その補助ツールとしてptrace(2)ベースのLinux用関数トレーサを自作しました。こういうツール上でまずソフトウェアを実行してみて、どのファイルのどの関数がどういう順で呼ばれるか把握おけば、いきなりソースコードの山と格闘を始めるより楽かなーと思いまして。せっかく作ったので公開します。 http://binary.nahi.to/hogetrace/ straceはシステムコールだけ、ltraceは共有ライブラリ(DSO)の関数呼び出しだけ*1をトレースしますが、このツールは、実行バイナリ中の自作関数の呼び出しもトレースします。例えば再帰で1から10まで足し算するソースコードを用意して % cat recursion.c #include <stdio.h> int sum(int n) { return n ==

    hogetrace - 関数コールトレーサ - memologue
  • Cの型宣言 - 菊やんの雑記帳

    Cの宣言から型が何かを読み解くのって難しいですよね。 えっ、もう何を見せられても読める自信があるって? 当然 void (*signal(int, void (*)(int)))(int);これくらいは読めるよね。 じゃあ typedef int t; t foo(t (t));この foo の型は何だろう? t hoge_1(t *t); t hoge_2(t *(t)); t hoge_3(t (*t));なんて全部同じに見えるし…

    Cの型宣言 - 菊やんの雑記帳
    odz
    odz 2007/08/27
  • プログラミングと初心者 - まちゅダイアリー (2007-08-18)

  • const char* const p = "ABC"; と const char q[] = "ABC"; はどちらがよいか、みたいな与太 - memologue

    諸事情あって、ふと前に読んだドキュメントに書いてあった細かいことが気になった。いやいつも細かいけど。 const char* const p = "ABC";より const char q[] = "ABC";のほうがいいのか?的な話。後者の方が良いらしいので、確認するととともに、すぐになんでも書くのはどうなんだと思いつつも無駄に細かく解説。いろいろ間違ってたらゴメンナサイ。C言語入門? 先に結論 共有ライブラリやPIEな実行ファイルを作る場合は、後者の書き方(const char q[] = "xxx")のほうが良さそうですね。PIEじゃない単なる実行ファイルを作るときは、最適化かけるならあんまりかわらないかも。 比較1) コンパイル時の最適化の効きやすさ 最適化といってもいろいろありますが、↓に限って言えば、const char q[] のほうが効きやすいようですね。 gcc vers

    const char* const p = "ABC"; と const char q[] = "ABC"; はどちらがよいか、みたいな与太 - memologue
    odz
    odz 2007/08/27
  • switch - 主題のない日記

    知人が C のこんなコードを持ち出してきた。 switch(0){putchar('A');} これは普通は実行しても文字 A は出力されないのだが、 Borland C では出力されるのだそうだ。 で、規格 (JISX3010) ではどうなっているのかと調べてみた。出力されないのが正しいようだ。要約すると「制御式の値に対応する case ラベルに跳び、対応する case ラベルが無い場合は default ラベルに跳ぶ。 対応する case ラベルも default ラベルも無ければ何もしない。」ということである。 上の例では対応する case ラベルも default ラベルも無いのであるから何もしない。 定義としては実にシンプルなもので、感覚的にも特に逸脱してはいないと思う。 規格の switch 文の記述内で興味深い例を見付けた。 以下がその例を引用したものだ。 switch(ex

    switch - 主題のない日記
    odz
    odz 2007/07/03
    初期化を飛び越えるのは不正なのでは
  • code

    CODE < ^ > << new | old >> / 2023-03-27

    odz
    odz 2007/06/11
    すげぇ
  • C配列参照演算子の興味深い仕様 - moriyoshiの日記

    open-std.org のC99 Rationaleを読んでいて、興味深い一節を発見。 6.5.2 Postfix operators 6.5.2.1 Array subscripting The C89 Committee found no reason to disallow the symmetry that permits a[i] to be written as i[a]. The syntax and semantics of multidimensional arrays follow logically from the definition of arrays and the subscripting operation. The material in the Standard on multidimensional arrays introduces no new

    C配列参照演算子の興味深い仕様 - moriyoshiの日記
    odz
    odz 2007/03/23
    うは
  • yunoの雑記帳 - gcc/attribute

    gcc4.1の__attribute__のメモ。 関数属性 † __attribute__((alias("name"))) 関数を他の関数のエイリアスにする。 void foo() __attribute__((alias("bar"))); __attribute__((always_inline)) 最適化がオフのときでも、関数をインライン展開する。 __attribute__((flatten)) 関数のサイズやインライン化パラメータを無視して、常にインライン展開する。 __attribute__((cdecl)) 386専用。 __attribute__((const)) 関数に副作用がなく、戻り値が引数のみに依存すると仮定する。 __attribute__((constructor)) 関数がmainに入る前に自動的に呼ばれるようにする。 __attribute__((dest

    odz
    odz 2007/03/16
    gcc の属性一覧
  • ホワット・ア・ワンダフル・ワールド libtcc を使えば C は高階関数型言語になる

    ふと,qsort の第四引数に直接 C のコード片を渡せたら面白いんじゃないか ? とか思って,TCC を使ってみたら簡単にできました. つまり,こういうこと qsort(... , compile("int lambda(int *x, int *y) {return(*x>*y)?1:(*xtcc-0.9.23.tar.gz とかを持ってきて,tar xvf して configure ; make して su して make install しておいてください.TCC には,普通の爆速 C コンパイラ tcc と,C 言語のコード片を機械語に変換するライブラリ libtcc.[h/a] が含まれています.libtcc の API については,libtcc で C のソースコードを eval などを. ソースは,一見長めに見えますが,これは単に,libtcc.h で API として公開さ

    odz
    odz 2007/02/22
    tcc
  • はじめてのにき(2007-02-13)

    _ ううん とりあえずハッシュに叩き込んで keys とか。 sort uniq に何byte使ってるんだという。 もちょい考えよう (01:05) _ dellast http://golf.shinh.org/p.rb?delete+last+line うーん。 sed は x の 1Byte だぜ! と思ったんだけど leading new line があるんだなー (01:33) _ AWK http://jarp.does.notwork.org/diary/200702b.html#200702121 mawk と gawk はだーいぶ違うらしい。 AWK勉強したいと思ってることだし、 どうせならアグレシッブなのをってことで xgawk を入れてみようかなと思う。 x ついてるのに意味があるのかは知らないけど。 拡張子は何にしようか。 ベタベタに xgawk とかでいいんかな

    odz
    odz 2007/02/14
    ゴルフネタになってるし
  • L&#39;eclat des jours(2006-12-31)

    _ リポジトリの整理 icmppingだとかcstructとかの小物を単一のリポジトリにまとめた。 cstructはとんでもないバグがあったので修正。指摘してくださった人、どうもありがとう。 #というか、なんでcstructを作ったかを思い出したけど、どうしようかなとか思案したり(あまり必要性を感じなくなってきたわけなのだ)。 _ libiconv 1.11.1をMSVC6でビルド ruby-listでiconvが話題になってるときに、エンコード名Windows-31Jを使った例が出てた。で、試しにやると c:\home\test>ruby -riconv -e 'puts Iconv.conv("windows-31j", "utf-8", "\xe3\x80\x9c")' -e:1:in `conv': invalid encoding ("windows-31j", "utf-8")

    odz
    odz 2006/12/31
    へぇ、ATL知らないから何が起こっているかさっぱりわからん
  • glibc の fopen() で 'm' オプションを使う - bkブログ

    glibc の fopen() で 'm' オプションを使う 最近の glibc の fopen() には 'm' というオプションがあると知りました。 'm' オプションを指定すると、リードオンリーでファイルを開いたとき、可能な場合、 mmap が内部的に使われるようになります。 次のようなプログラムに対して strace をかけると fgets() の内部的で read システムコールが呼ばれていることがわかります。 #include <stdio.h> #include <assert.h> int main() { char buf[1024]; FILE *fp = fopen("/etc/shells", "r"); // FILE *fp = fopen("/etc/shells", "rm"); // using mmap I/O assert(fp != NULL); f

    odz
    odz 2006/05/06
    fopen で m オプションを使うと mmap を使う (glibc限定)
  • Cプログラミングのメモ

    CODE COMPLETE によると、プログラミングを上達するには日頃から よく読むこと (マニュアル・書籍・他人のソースコードなど) とよ く考えることが肝要だそうです。 何か耳寄りな情報があれば教えてくださいませ。 (ページの内容はかなり古くなっています) 目次 書籍 インターネット上の文書 ライブラリ ツール メモリプロファイラ GTK+/GNOME関連 その他 書籍 書籍の情報は 別の場所に移しました。 インターネット上の文書 Programming in C * C言語についての網羅的な情報源。 Steve Summit: C Programming FAQs: Frequently Asked Questions * 書籍版の 3/4ほどの内容。 情報源: Web版, 日語訳, 日語訳のHTML版 Henry Spencer: The Ten Commandments f

  • Valgrind Home

    Information About News Tool Suite Supported Platforms The Developers Source Code Current Releases Release Archive Variants / Patches Code Repository Valkyrie / GUIs Documentation Table of Contents Quick Start FAQ User Manual Download Manual Research Papers Books Contact Mailing Lists and IRC Bug Reports Feature Requests Contact Summary Commercial Support How to Help Contributing Project Suggestion

    odz
    odz 2006/02/05
    メモリ、スレッド周りのバグ検出ツール。ただしLinux専用
  • Artistic Style

    A Free, Fast, and Small Automatic Formatter for C, C++, C++/CLI, Objective-C, C#, and Java Source Code. Website: http://astyle.sourceforge.net/ Features It's free and open source!Cross-platform application works on Windows, Linux, Mac OS X, and others.Supports 15 popular bracket styles.Over 90 formatting options.Detailed documentation for use and options.Available in over 20 languages with easy ad

    odz
    odz 2006/02/05
  • IBM Globalization - ICU

    Three critical imperatives will determine a smarter, more responsive business: IT will become decentralized, open and secure. Automation will fuel the future of work. Winners will scale the value of data with AI. Our hybrid cloud software helps you achieve these initiatives: Build upon an open, modular services architecture for any cloud. Protect and extend existing investments. Support from an ec

    IBM Globalization - ICU
  • 1