使用gcc编译时出现错误 - strprintf(“%”PRId64,n)

6
我正在尝试在我的Centos 6.5上使用GCC++编译来自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);(注意多余的空格)不起作用(给出相同的错误消息)。


它对我来说可以正常工作:http://coliru.stacked-crooked.com/a/f3aff44dd52c22be - 你确定你有所有相关的 #includes 吗?在前面的行中有任何警告或其他问题吗? - Paul R
1
这个 - https://dev59.com/C2ct5IYBdhLWcg3wufxb - 是一个答案。 - borisbn
1
顺便提一下,为了以后最好在问题中包含编译器版本和编译参数。 - borisbn
什么是 strprintf?你能发布一个 MCVE 吗? - M.M
1
往源文件上方看,有迹象表明你的编译器可能不支持inttypes.h,加入#ifndef PRId64 #error Lame compiler detected #endif - M.M
显示剩余3条评论
1个回答

0

看起来错误在外部某处。 看这里 - http://ideone.com/dqeMTY - 我复制了你的代码,但是我犯了一个错误,在define __STDC_FORMAT_MACROS 1之前漏掉了# 标志,然后...在PRId64附近遇到了相同的错误。 尝试在可疑行之前注释一半的代码,然后再注释另一半等等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接