如何在printf函数中使用宏

时间:2011-11-03 04:26:54

标签: c macros

所以我在我的头文件

中定义了这个宏和其他一些宏
#define COL1WIDTH 16

我想用它来打印这样的东西:

word  25 Dir1/FileB 129 Sat Jan 1 00:00:02 2011 12 1(x4), 2(x2), 3(x2), 4(x2), 5(x2) 

获取宏的语法如何工作?尝试了一堆,它一直搞砸了。

试过这个

printf("%COL1WIDTHs\t",index->terms[0].term);

3 个答案:

答案 0 :(得分:8)

printf("%" #COL1WIDTH "s\t", ...

在C预处理器中读取token pasting and stringizing

答案 1 :(得分:4)

宏不在字符串内扩展。这里有一个不错的解决方法 - 写

printf("%*s\t", COL1WIDTH, index -> terms[0].term);

COL1WIDTH将用于代替*

答案 2 :(得分:0)

修改您的代码,如下所示,它将达到目的

#define COL1WIDTH "16"    //define the constant in double quotes

printf("%"COL1WIDTH"s\t",index->terms[0].term); //place macro out of quotes so it can expand            
                                                //during the precompilation