所以我在我的头文件
中定义了这个宏和其他一些宏#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);
答案 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