« 最近のRPGってキャラが自分でレベルアップ!って言うよね | トップページ | 秋は読書の季節 »

2011年9月22日 (木)役に立つようで役に立たない少し役に立つ記述

おはようございます。本日の当番、プログラマーのS.Kです。

未だに新人気分が抜けていない僕ですが、
時が経つのは早いもの、気付けば入社してから1年が過ぎていました。

まだ新人のように凡ミスを多発する毎日ですが、肩書だけは外れてしまいました。
本当にこれから大丈夫なんだろうか・・・。

そんな不安に囚われつつも、なんとかプログラマーをやってます。

という訳でプログラマーらしくたまにはプログラムの話題でも、と思ったのですが、
大したネタもないので、また簡単な小技でも書こうかと思います。

今回は#defineの特殊な記述についてです。
僕は最近知りましたが、実は常識的な事なのかも・・・。

通常は
#define MAX 10
#define MUL(x, y) (x * y)

printf("%d\n", MAX);
printf("%d\n", MUL(3, 5));


■出力結果
10
15


といった感じに記述を単純に置き換える時に使用しますが、
他にも特殊な置き換え方が出来ます。


例えば、#を使う事で文字を文字列にとして扱う事が出来ます。
#define TEXT(str) #str

printf("%s\n", TEXT(test));  // printf("%s\n", "test")
となる

■出力結果
test


他にも、##と二つ並べる事で文字をつなげる事が出来ます。
#define TEST_A 5
#define TEST(x) TEST_##x

printf("%d\n", TEST(A));  // printf("%d\n", TEST_A)
となる

■出力結果
5


これを使うと以下のようなことができます。
#define ENUM(x) enum x{\
  x##_INIT,\
  x##_UPDATE,\
  x##_FIN,\
}

ENUM(TEST);
と記述すると

enum TEST{
  TEST_INIT,
  TEST_UPDATE,
  TEST_FIN,
};

と記述した事になります。


この記述をどういったところで使うかは人それぞれだと思いますが、
知っていると色々と役に立つかもしれません。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/09/post-748d.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

« 最近のRPGってキャラが自分でレベルアップ!って言うよね | トップページ | 秋は読書の季節 »

プログラマー」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 役に立つようで役に立たない少し役に立つ記述:

« 最近のRPGってキャラが自分でレベルアップ!って言うよね | トップページ | 秋は読書の季節 »