使用 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)的主要内容,如果未能解决你的问题,请参考以下文章
用mingw32 gcc 一编译就出一大堆错误,应该怎么解决