1

我寻求format_spec功能。上下文描述如下。
没有这样的编译时函数

#include <stdio.h>
#define typeof(x) __typeof(x)

int main(){
  int x;         /* Plain old int variable. */
  typeof(x) y=8;   /* Same type as x. Plain old int variable. */

  //printing
  printf(format_spec(typeof(x)), y);
  /*I don't want to use:
    printf("%d", y);
  I want generic way to get format specifier for any type.*/
}
4

1 回答 1

2

C 没有通用的格式化方式,仅提供有限的类型自省功能。对于固定的类型列表,您可以使用_Generic

printf(
    _Generic(x,
        int:      "%d\n",
        unsigned: "%u\n",
        long int: "%ld\n",
        char *:   "%s\n"),
    x);

但是,这很麻烦,通常不是 C 的设计目的。在 C 中,您应该主要了解您正在使用的类型并避免此类问题。

于 2022-01-01T13:22:11.903 回答