C++/defineマクロ

C言語のdefineマクロは便利

コピペ関数をなくす

x##,#xの使い方のサンプルですな

#include <iostream>

#define DEF_HOGE(x) void x##_hoge() {std::cerr << #x", hoge!" << std::endl;}

DEF_HOGE(foo)
DEF_HOGE(bar)

int main ()
{
  foo_hoge();
  bar_hoge();
  return 0;
}

実行すると

foo, hoge!
bar, hoge!

特に同じようなメソッドでオーバーロードしたものも作らないといけないときとか激しく便利

#include <iostream>

#define DEF_HOGE(x)                             \
  static void x##_hoge(int a);                  \
  static void x##_hoge(double y);

#define DEF_HOGE_IMPL(x)                                \
  void Hoge::x##_hoge(int a)                            \
  {                                                     \
    std::cerr << "int " << a << std::endl;              \
  }                                                     \
  void Hoge::x##_hoge(double a)                         \
  {                                                     \
    std::cerr << "double " << a << std::endl;           \
  }

struct Hoge
{
  DEF_HOGE(foo)
  DEF_HOGE(bar)
};

DEF_HOGE_IMPL(foo)
DEF_HOGE_IMPL(bar)

int main()
{
  Hoge::foo_hoge(10);
  Hoge::bar_hoge(3.5);
  return 0;
}

実行すると

int 10
double 3.5

Search

Blog

Twitter

Wassr

Recommend


とりあえず買っとく?

Ads

ドミノ・ピザ 5%OFF!

 iTunes Store(Japan)

KINOWIKI

Total: 249

Today: 1

Yesterday: 7

edit

Counter

total : 00060022
today : 00000083