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,
};
と記述した事になります。
この記述をどういったところで使うかは人それぞれだと思いますが、
知っていると色々と役に立つかもしれません。
| 固定リンク | コメント (0) | トラックバック (0)
「プログラマー」カテゴリの記事
- 技術交流の業(2019.03.07)
- 福袋争奪戦デビュー(2019.01.31)
- 温泉旅行(2019.01.24)
- ゲーセンの近況(2018.11.29)
- 健康的にプログラミングを続けるためのちょっとした習慣(2018.10.18)
この記事へのコメントは終了しました。
コメント