[Cプリプロセッサ] マクロ引数の文字列化

C言語のプリプロセッサにおいて、引数付きマクロの引数を文字列化したいときがある。

たとえば、

int variable = 1;
DEBUG_PRINT(variable);

とすると、

printf("%s is %d", "variable", 1);

のように置換されるマクロを定義したい場合。

#define DEBUG_PRINT(x) printf("%s is %d", "x", 1)

としても、

printf("%s is %d", "x", 1);

と出力されてしまい、望む結果が得られない。

このようなときは、引数の文字列化機能を使用する。

引数名の先頭に`#’をつけることで、引数の文字列定数表現を得ることができる。

上の例の場合は次のようにする。

#define DEBUG_PRINT(x) printf("%s is %d",  #x, x)

参考
The C Preprocessor


Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/category.php on line 383
This entry was posted in コンピュータ and tagged , , by bugyo. Bookmark the permalink.

Deprecated: Creation of dynamic property WP_Query::$comments_by_type is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/comment-template.php on line 1528

Leave a Reply

Your email address will not be published. Required fields are marked *

*