タグ

cとgccに関するmogwaingのブックマーク (7)

  • gcc の -Wall 以外の警告オプション - ひげぽん OSとか作っちゃうかMona-

    以前同僚の光成さんが、以下の warning オプションを使っていると書かれていたのが気になったので調べてみました。 -Wall -W -Wformat=2 -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wfloat-equal -Wpointer-arith もし上記以外にも良さげなオプションがありましたら教えてください<(_ _)> 情報源 man と info と http://sugarpot.sakura.ne.jp/yuno/?gcc%2Fwarning 。 最初は日語版の man だけを見ていたのですが、id:kazuhooku に info を見るべしと教わりました。 man も info もそうですが、日語版は情報が少なかったりするので注意。 LANG=C man gccなどとしましょう。 -Wforma

    gcc の -Wall 以外の警告オプション - ひげぽん OSとか作っちゃうかMona-
    mogwaing
    mogwaing 2008/05/10
  • 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; } 実行結果は以下の

    mogwaing
    mogwaing 2007/08/28
    mainの前に関数を呼ぶ。gccの拡張を使う方法とc++のコンストラクタを使う方法
  • かそくそうち - __attribute__の括弧

    Binary 2.0カンファレンス2006 に動画とIRCで参加してきました。 http://0xcc.net/blog/archives/000149.html 動画をキャプチャしながら見ていたので、IRCとのタイムラグが結構ありました。 技術的にはブログなどで既知のものが多かったんですが、PS3 LinuxでのプレゼンにWiiリモコン使うなど、ネタとしては面白かったです。 最初の質問で「gccの__attribute__はなぜ括弧が二重になっているのか?」というのがあって、そのときには思いつかなかったのですが、休憩中にひらめいてIRCにちょっと書き込みました。 19:32 >hamigaki< 多分、gcc以外でマクロで代用するためですよ>括弧 19:32 >hamigaki< 二重でないと、コンマがかけない これだけだと、分からない人もいたと思うのでちょっと解説しておきます。 そもそ

    かそくそうち - __attribute__の括弧
  • Using GNU C __attribute__

    One of the best (but little known) features of GNU C is the __attribute__ mechanism, which allows a developer to attach characteristics to function declarations to allow the compiler to perform more error checking. It was designed in a way to be compatible with non-GNU implementations, and we've been using this for years in highly portable code with very good results. Note that __attribute__ spell

  • ひげぽん OSとか作っちゃうかMona- - [gcc] ライブラリ開発者は gccの「Declaring Attributes of Functions」を読むべし

    gcc を使う人は info gcc をくまなく読むべきだと言われたらそれでおしまいなのですが、info gcc の中で「Declaring Attributes of Functions」が面白かったので紹介します。 実は Mona のカーネル内で GDT(Global Descriptor Table) 関連のコードが最適化オプション -O2 では動くけど -O3では動かないという現象に出くわしました。 /* TSS. Mona has only one TSS */ setSegDesc(&g_gdt[4], (dword)g_tss, 0x00000067, SEGMENT_PRESENT | SEGMENT_DPL0 | 0x00 | 0x09);のように TSS を設定したあとに /* prepare dpl0 stack */ memset(g_tss, 0, sizeof(

    ひげぽん OSとか作っちゃうかMona- - [gcc] ライブラリ開発者は gccの「Declaring Attributes of Functions」を読むべし
    mogwaing
    mogwaing 2007/08/19
    拡張について
  • 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

    mogwaing
    mogwaing 2007/08/12
    gcc拡張の関数属性
  • 関数呼び出し規約(on IA-32)について

    Written by Yashiro Takeshi <yashiromann@nifty.com> 2004/1/14 IA-32(x86)上のgccでの関数呼び出し規約について、まとまっている文書がgoogleで検索してもなかなか見つからず苦労したので、他のものと一緒についでにまとめておくことにします。私もよく分かっていないので、何か間違いがありましたら(掲示板でもメールでも)教えてください。 確認の際、抜けがないようにここにも書いておくと、関数呼び出し規約とは、 関数呼び出しの前後で保存されなければならないレジスタ 引数渡しの方法 (ex. レジスタ渡し・スタック渡し・共有メモリ渡し) 引数渡しの順序 関数呼び出し前後でのスタックポインタの保存方法 返り値の戻し方 の全てをあわせたものであって、どれか一つでも曖昧にしてミスしてしまうと思わぬところでエラーが発生してしまいます。(私の

  • 1