#define Page 5
void printSystemInfo() {
printf ("%i", Page);
}
多数民众赞成我的代码可以解释我如何在控制台中打印?
现在我的控制台看起来像这样" 5"但我想要""
感谢您的帮助!
答案 0 :(得分:4)
您可以使用一些预处理器技巧。我们有#
运算符,它将符号转换为字符串。
#define _(a) #a
当您致电_(foo)
时,会将其翻译为"foo"
。因此,在您的情况下,您可以执行以下操作:
#include <stdio.h>
#define _(a) # a
#define PAGE 5
int main(int argc, char *argv[])
{
printf("%s: %i\n", _(PAGE), PAGE);
return 0;
}
这将做的是:
我们定义一个名为_
的宏,它接受一个参数a
。此宏使用预处理器中的运算符#
(称为stringification)。这将是一个传递给宏的命名转换为字符串的情况。示例:_(foo)
被翻译为"foo"
。
在main
中,printf()
来电被翻译为printf("%s: %i\n", "PAGE", 5);
。以逐步的方式,当预处理器看到_(PAGE)
符号时,它会将其翻译为"PAGE"
。
上述链接解释了这些内容的工作原理,我引用(我的标记):
有时您可能希望将宏参数转换为字符串常量。参数不会在字符串常量内替换,但您可以使用'#'预处理运算符。当宏参数与前导'#'一起使用时,预处理器将其替换为实际参数的文字文本,并转换为字符串常量。 与普通参数替换不同,参数不是首先进行宏扩展。这称为字符串化。
答案 1 :(得分:2)
你走了。这是非常微不足道的事情,但请问是否有不明确的事情。
#define Page 5
void printSystemInfo()
{
printf((char const[])??<0120,0141,0147,0145,0040,0045,0151,!"bad"??>,Page);
}