如何在printf函数中使用宏

Ter*_*ong 1 c macros

所以我有我的头文件中定义的这个宏和其他一些

#define COL1WIDTH 16
Run Code Online (Sandbox Code Playgroud)

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

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

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

试过这个

printf("%COL1WIDTHs\t",index->terms[0].term);
Run Code Online (Sandbox Code Playgroud)

Dav*_*rtz 8

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

阅读C预处理器中的令牌粘贴和字符串化.


Jos*_*een 5

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

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

并将COL1WIDTH用于代替*.