我已经把我的代码放在
typedef int myinteger ;
但是,如果我将 typedef 更改为另一种整数类型,我希望我的所有代码继续有效。
现在我想打印一个 myinteger
类型的变量。这是一种正确的方法吗?我刚刚发现了以下“hack”:
printf("%lld", myvariable) ;
希望任何整数类型都适合 long long
并且编译器会进行正确的转换。它似乎适用于 gcc(尽管我有一个警告)。 printf
是一个问题,但它们也可能是其他问题(比如找到最大的“myinteger”)。
更一般地说,是否有可能/希望尝试我尝试实现的目标,编写代码时仅假设 myinteger
指的是某种整数类型?
最佳答案
我推荐:
typedef int my_type_t;
#define FMT_MY_TYPE "%d"
然后:
my_type_t my_var = 0;
printf("Here is my_var: " FMT_MY_TYPE "\n", my_var);
这甚至适用于结构。这是一个概括:
typedef struct { int a; int b; } my_struct_t;
#define FMT_MY_STRUCT "{a: %d, b: %d}"
#define FMT_MY_STRUCT_ARG(x) (x).a, (x).b
然后:
my_struct_t my_var = {0, 1};
printf("Here is my_var: " FMT_MY_STRUCT "\n", FMT_MY_STRUCT_ARG(my_var));
关于c - printf 未知精确类型的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34545271/