字符串作为宏,带有C中的参数

时间:2015-09-29 08:21:21

标签: c macros

考虑以下字符串:

Page 1 of 100

1100不是固定值。

如何通过将两个值作为参数传递来定义C宏以呈现该字符串?

需要说明的是,格式必须如下:

#define PAGE_IDX_MACRO(x,y)

2 个答案:

答案 0 :(得分:8)

#运算符将预处理程序标记转换为字符串文字。

字符串文字在C中连接,只需在它们之间添加一个空格,即"hello" "world"相当于"helloworld"

所以宏应该是:

#define PAGE_IDX_MACRO(x, n) ("Page " #x " of " #n)

假设它被这样调用:

PAGE_IDX_MACRO(1, 100);

其中1和100是编译时常量。

答案 1 :(得分:0)

您可以通过双哈希标记连接字符串:

  

## [连接实际参数] [1] 期间提供了一种方法   宏观扩张。

     

[1]:   http://publib.boulder.ibm.com/infocenter/comphelp/v7v91/index.jsp?topic=/com.ibm.vacpp7a.doc/language/ref/clrc09numnum.htm

来自这个问题:

What do two adjacent pound signs mean in a C macro?