使用 gcc 编译错误 - strprintf("%"PRId64, n)

Posted

技术标签:

【中文标题】使用 gcc 编译错误 - strprintf("%"PRId64, n)【英文标题】:Compile error using gcc - strprintf("%"PRId64, n) 【发布时间】:2014-09-23 08:36:18 【问题描述】:

我正在尝试使用 GCC++ 在我的(最新的)Centos 6.5 上从 Github 编译一些代码。 但是当我尝试编译代码时收到以下错误消息。

下面一行是失败的:

...
#define __STDC_FORMAT_MACROS 1

...
#include <inttypes.h>

...
inline std::string i64tostr(int64_t n)

  return strprintf("%"PRId64, n);   // <-- errors here.


...

错误是:

error: expected ')' before 'PRId64

可能是什么问题,我该如何解决?

编辑 1:这是失败的代码行。https://github.com/rat4/blackcoin/blob/master/src/util.h#L226

编辑 2:printf("%" PRId64, n); 替换代码(注意额外的空格),如建议的答案中所建议的那样不起作用, (给出相同的错误消息)。

【问题讨论】:

它对我来说没问题:coliru.stacked-crooked.com/a/f3aff44dd52c22be - 你确定你有所有相关的#includes 吗?前几行中是否有任何警告或其他问题? 这 - ***.com/questions/11869593/… - 是一个答案 顺便说一句,最好(将来)在问题中包含编译器版本和编译参数 我添加了github代码的链接。正如我所说,我的 Centos 6.5 都是最新的,包括 GCC 进一步查看源文件,提示您的编译器可能不正确支持 inttypes.h,添加 #ifndef PRId64 #error Lame compiler detected #endif 【参考方案1】:

看来,错误在某个外部。看 - http://ideone.com/dqeMTY - 我复制了你的代码,但是我在 define __STDC_FORMAT_MACROS 1 之前弄错了 # 符号,并且......我在 PRId64 附近也遇到了同样的错误。尝试在可疑行之前注释一半代码,然后再注释另一半,依此类推。

【讨论】:

以上是关于使用 gcc 编译错误 - strprintf("%"PRId64, n)的主要内容,如果未能解决你的问题,请参考以下文章

mac 使用gcc 为啥编译错误是clang 提示

用mingw32 gcc 一编译就出一大堆错误,应该怎么解决

使用 ARM GCC 编译列表迭代器时的模板编译时错误

gcc 使用正弦和 boost:interval 编译错误

使用 gcc 编译时导致错误的 case break [关闭]

GCC“内部编译器错误:重新输入错误报告例程”(包括完整代码)