C言語のdefineマクロの##とか

8 月 14th, 2008 in C

初心者教本にはあんまり載っていないdefineの使い方

lispのマクロとか,関数を量産できるマクロが好きです
P言語にはあるのかな?

4 Responses to “C言語のdefineマクロの##とか”

  1. _ak Says:

    おじさんは10年くらい前こういう用途にはtemplateを多用していたような気がしますが、ちょっと違うのかな。。

  2. making Says:

    コメントありがとうございます.
    例えば
    void set_x(int _x) {
    x = _x;
    }
    int get_x() {
    return x;
    }
    void set_y(int _y) {
    y = _y;
    }
    int get_y() {
    return y;
    }
    void set_z(int _z) {
    z = _z;
    }
    int get_z() {
    return z;
    }

    みたいな明らかにコピペになってしまうような場合,マクロを使うと
    DEF(x)
    DEF(y)
    DEF(z)
    ようにできるという意味でしたが,これもtemplateでできるのでしょうか?
    マクロを使うと楽ですが,ソースコード検索とかIDEには向かないでしょうね...
    僕はPHP→Lisp→C/C++と時代を遡るように勉強してきているのでCはまだまだ修行中です.何かおかしなことがあれば是非教えてください!

  3. making Says:

    てゆうか******さんですかw

    ↑隠しましたw(08/08/21)

  4. _ak Says:

    てゆうか、なにばらしてんだYO
    単純に同じような名前の違うメソッドを作りたい場合にはそうですね、マクロしかないかもしれませんね。
    しかしクラス的なものを導入できる言語であれば、そういう同じようなメソッドを持たざるをえないということは、同じような特徴のクラスなので、継承関係を見直してリファクタするかもしれません。なので、話している言語がCだとするとちょっと的外れだったかもしれません。
    テンプレートはそうした上での、’同じような操作をする’メソッドを、入力出力の型によって多態にするものなので、元ねたでいうと、Hoge::foo_HogeとHoge::bar_Hogeをひとつで書く仕組み、になるとおもいます。(同じ操作ならね)

Leave a Reply

Search

Blog

Twitter

Wassr

Recommend


とりあえず買っとく?

Ads

ドミノ・ピザ 5%OFF!

 iTunes Store(Japan)

Categories

Tags

Counter

total : 00059990
today : 00000051