【发布时间】:2015-12-21 07:29:07
【问题描述】:
在 C 中是否有任何可能的方式(通过使用任何函数或任何此类),以便我们可以使用单行以不同数据类型的结构打印内容? 比如说:
typedef struct ABC{
int a;
char b;
long c;
}ABC1;
要打印它,我们需要编写:
printf("%d %s %ld",ABC1.a,ABC1.b,ABC1.c)
任何其他方法,以便我可以打印
printf("????",????ABC1)??
【问题讨论】:
-
printf()没有一些神奇的格式说明符可以正确识别任意用户定义的结构类型,并且无法计算出参数的类型,除非您在格式字符串中正确指定它。您可以创建一个知道如何以所需格式打印struct ABC的函数,但它不知道如何打印其他结构类型。 -
格式字符串应为
"%d %c %ld"以匹配实际参数。对实际问题的回答是否定的,C 没有“自省”能力来在运行时弄清楚struct是由什么组成的。要了解困难,请参阅Is there a way to print struct members in a loop without naming each member in C?。 -
@dxiv 为什么必须在运行时计算出来?只需在编译时执行,请参阅下面的答案。