タグ

プログラムと罠に関するiwwのブックマーク (3)

  • Using and Porting the GNU Compiler Collection (GCC) - GCCコマンド・オプション

    GCCを起動すると、 通常は、 前処理(preprocessing)、 コンパイル、 アセンブル、 リンクが行われます。 「全体的(overall)オプション」によって、 この一連の処理を中途の段階で停止することができます。 例えば、 `-c'オプションはリンカを起動しないよう指示するものです。 この場合、 アセンブラによって生成されるオブジェクト・ファイルが出力となります。 他のオプションは、 一連の処理の中の1つの段階に渡されるものです。 オプションの中には、 プリプロセッサを制御するものもあり、 コンパイラ自体を制御するものもあります。 また、 アセンブラやリンカを制御するオプションもありますが、 それらのほとんどは、 ここではドキュメント化されていません。 というのは、 このようなオプションを使うことが必要になることはめったにないからです。 GCCにおいて使うことのできるコマンドラ

    iww
    iww 2017/08/22
    『-llibrary リンク時に、 libraryにより指定される名前のライブラリを探します。コマンドの中のどこにこのオプションを指定するかによって、 違いが出てきます。』 知らなかった そんなの・・・
  • 今更volatile(なポインタ)ではまるなんて - ctrl-shift-moccos

    AVR Studio上で、割り込みベクタで処理されるリングバッファの状態(ポインタの指す先)をループ条件にしたコードを書いたんですよ。以下のようなイメージ。 while (ポインタ同士の比較) { } これが一向にループを抜けてこない。ビルド時に生成される、アセンブリ言語が混ぜ込まれたファイル(*.lss)を見ると、条件判定の前まで戻ってくるループになっていませんでした。最初に条件判定して、するりと抜けられなければ無限ループに飛びます。 (略:このへんにポインタ比較するコードがある) 39a: 14 f1 brlt .+68 ; 0x3e0 (中略) 3e0: ff cf rjmp .-2 ; 0x3e0 :飛び先 volatile unsigned char *hoge のような宣言をしているポインタです。いきなりAVR StudioのCコンパイラを疑ってしまいましたが、同様のコードをC

    今更volatile(なポインタ)ではまるなんて - ctrl-shift-moccos
    iww
    iww 2016/08/18
    『volatile int * hoge1; // ポインタの参照先がvolatile』
  • PHPのin_arrayは罠が多いので注意喚起が必要 - Qiita

    最初に結論 in_arrayには第三引数trueを指定しろ。絶対にだ。 はじめに in_arrayについては、はじめにPHP: in_array - Manualをよく読んでおいてほしい。 この記事に書いたコード断片は、どうか読むだけではなく自分で手を動かして確認してほしい。 PHPで短いコードを動かすのはPsySHを利用すると、とても捗る。ローカルに動作環境がなければ、Ideone.comなどのオンラインサービスを利用しても差支ない。 static $fruits = ["apple", "orange", "banana"]; in_array("apple", $fruits); // => true in_array("mikan", $fruits); // => false これがin_arrayのふつうの使ひかただ。 Webアプリケーションでの実例 では、次のような例を見てみ

    PHPのin_arrayは罠が多いので注意喚起が必要 - Qiita
  • 1