【发布时间】:2018-11-22 15:03:19
【问题描述】:
我在浏览github 代码时看到了格式说明符%qd。然后我检查了 GCC 编译器,它工作正常。
#include <stdio.h>
int main()
{
long long num = 1;
printf("%qd\n", num);
return 0;
}
printf() 中格式说明符 %qd 的用途是什么?
【问题讨论】:
-
更便携的例子可能是
int64_t。但也不错的问答 -
q长度修饰符是一种不可移植的、不可靠的、过时的、已弃用的ll的书写方式。在您的代码中使用ll;鼓励那些在 GitHub 上维护代码的人升级到标准 C99 格式。 -
printf格式由运行时库实现,而不是由编译器实现。这不是 gcc(或 egcs 或 llvm)问题。例如,在我的 Ubuntu 20.04 系统上,%qd与 gcc 和 glibc 一起工作,但在 gcc 和 musl 上失败——相同的编译器,不同的运行时库。
标签: c gcc format-specifiers openbsd