【问题标题】:Compile error using gcc - strprintf("%"PRId64, n)使用 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 吗?前几行中是否有任何警告或其他问题?
  • 顺便说一句,最好(将来)在问题中包含编译器版本和编译参数
  • 我添加了github代码的链接。正如我所说,我的 Centos 6.5 都是最新的,包括 GCC
  • 进一步查看源文件,提示您的编译器可能不正确支持 inttypes.h,添加 #ifndef PRId64 #error Lame compiler detected #endif

标签: c++ gcc centos6.5


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多