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

vde*_*ris 1 c macros

考虑以下字符串:

Page 1 of 100
Run Code Online (Sandbox Code Playgroud)

哪里1100不是固定值.

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

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

#define PAGE_IDX_MACRO(x,y)
Run Code Online (Sandbox Code Playgroud)

Lun*_*din 8

#运算符将一个预处理记号,以一个字符串.

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

所以宏应该是:

#define PAGE_IDX_MACRO(x, n) ("Page " #x " of " #n)
Run Code Online (Sandbox Code Playgroud)

假设它被调用如下:

PAGE_IDX_MACRO(1, 100);
Run Code Online (Sandbox Code Playgroud)

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