タグ

Cと雑学に関するiwwのブックマーク (6)

  • What's "LANG=C" ?

    はてなブログ」に移行しました。 1日1更新……を目指せなくなってきてるブログ。自分の勉強のために作りました。継続は力なり。 今は主にUbuntuとAndroidネタが中心です。 コマンドを、日語環境でなく英語環境で実行したいとき、LANG=Cと付けて実行してやったりする。 $ dateと$ LANG=C dateのそれぞれの実行結果を見比べると一目瞭然。 しかし、このCってのがよくわからん。英語環境を表すのにはenというのも用意されていて、実際に$ LANG=en dateとやると、やはり英語で表示してくれる。 じゃあ、Cって何なのよ。と思い調べてみた。 それで見つけたのが、次のページのこの記述 http://mailman.linuxchix.org/pipermail/techtalk/2002-November/013691.html 'LANG=C' sets the loca

  • KMC Staff Blog:gccのビルトイン関数 (printf)

    2009年07月03日 gccのビルトイン関数 (printf) gccのtipsを紹介します。主にgcc3.x からgcc4.x で変わっているところです。 #include <stdio.h> int main() { printf("Hello, world!\n"); } このプログラムはgcc3では普通にprintfを呼び出すコードを生成しますが、gcc4ではどうなるでしょうか。ARM版のexeGCC4でちょっと試してみます。 > gcc -S hello.c 生成されたhello.s を見てみると ... .LC0: .ascii "Hello, world!\000" .text .align 2 .global main .type main, %function main: @ args = 0, pretend = 0, frame = 8 @ frame_needed

  • strstr 関数の haystack と needle — ありえるえりあ

    $ man strstr char *strstr(const char *haystack, const char *needle); オブジェクト A からオブジェクト B を見つける関数を書く場合、オブジェクト A に haystack 、オブジェクト B に needle という引数名を付けるのは PHP文化だと思っていたのですが、どうやら UNIX の文化だということが判明しました。少し調べてみた感じだと「 Needdle in a haystack 」という英語のイディオムが元ネタになっているらしくて、意味は「見つけるのが困難なぐらい大きなオブジェクト (haystack) の中にあるオブジェクト (needle) 」らしいです [1] 。直訳だと「干し草の山の中の針」です。こういう味のある名前は好きですが、ボキャブラリが低いとさっぱり意味がわからないという弊害を伴います。

  • main() の前に関数を呼ぶ - bkブログ

    main() の前に関数を呼ぶ C/C++ のプログラムで、main() の前に関数を暗黙的に呼びたいときがあります。ここでは GCC の拡張を使った方法と、C++ のコンストラクタを使った方法を紹介したいと思います。 GCC では main() の前に呼ばれる関数を __attribute__((constructor)) という拡張機能を使って定義できます。たとえば、次のプログラムでは main() の前に foo() が呼び出されます。 #include <stdio.h> __attribute__((constructor)) void foo() { printf("hello, before main\n"); } int main (int argc, char **argv) { printf("hello, world\n"); return 0; } 実行結果は以下の

  • 4DM - FizzBuzz

    2010-03-22 buy_adderall 2010-03-04 buy+adderall 2010-02-23 RecentDeleted 2009-10-04 POJ2291 2009-09-11 AAA= 2009-06-20 POJ1023 2009-03-08 Short Coding 2009-01-19 anarchy golf 2009-01-17 123 AAA 2008-12-08 POJ3300 2008-12-04 POJ3300 clone 2008-11-26 POJ1032 2008-11-17 YukiWiki 2008-10-05 PKU+Judge+Online 2008-08-25 POJ1028 2008-01-12 Sphenic Numbers 2007-09-22 inverse matrix 2007-08-22 easy regexp

  • 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
    iww
    iww 2006/11/07
    const char p[] = "hello";
  • 1