【发布时间】:2011-11-15 06:35:47
【问题描述】:
我写了一个很简单的printf uint64_t的测试代码:
#include <inttypes.h>
#include <stdio.h>
int main()
{
uint64_t ui64 = 90;
printf("test uint64_t : %" PRIu64 "\n", ui64);
return 0;
}
我使用ubuntu 11.10(64位)和gcc 4.6.1版本编译,但是失败了:
main.cpp: In function ‘int main()’:
main.cpp:9:30: error: expected ‘)’ before ‘PRIu64’
main.cpp:9:47: warning: spurious trailing ‘%’ in format [-Wformat]
【问题讨论】:
-
您似乎将 C 代码编译为 C++,这是您的错误。如果您将文件重命名为
main.c并使用 gcc 进行编译,则一切正常。 -
使用 gcc 或 clang,最好指定
-std=c11或您使用的标准版本。这可以捕捉到这个错误和其他错误。我也至少推荐-Wall -Wextra -Wpedantic -Wconversion。