gcc 勉強会したい
今日、ちょっとソースを読む時間があったのですが、ひさしぶりに知らない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,$b,$c); return 0; } $ gcc -o add add.c $ ./add 4 + 3 = 7
いやぁ、なんだか別の言語っぽくなってしまいますね(浅い知識)。
それにしても、gccってよく使うものであるのに知らないことが多すぎる。以前、勝手に関数をinlineにする(-finline-functions)のを知らなくて、ダンプ読んでいてはまったこともあるし。
それに、どういう機構でコンパイルされているのかも、少しは理解したいなぁ。以前、レッドハットのgccの内部機構の紹介を軽く眺めて、簡単に置いてけぼりにされてしまったのだけど、少しは理解できるようになりたいなぁ。(ちなみに、あろはさんのgcc のフロントエンド作る日記がヒットする。さすが、オメガブロガー)