我在Ubuntu上使用sqlite3,并希望添加extension-functions.c文件提供的acos和asin函数。

https://github.com/seth/RSQLite.extfuns/blob/master/src/extension-functions.c

当我按照源代码中给出的说明进行操作时,出现以下错误,但没有找到任何解决办法。我尝试了Ubuntu 15.04、15.10和现在的16.04。

extension-functions.c: In function ‘print_elem’:
extension-functions.c:1942:10: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 3 has type ‘int64_t {aka long int}’ [-Wformat=]
   printf("%d => %lld\n", ee,c);
          ^

这是我所做的:
  • 我安装了sqlite3,libsqlite3-0,libsqlite3-3:i386和libsqlite3-dev。
  • 我已将extension-functions.c下载到新文件夹

  • 在新文件夹中的
  • 中,我按照源代码中的建议执行了$ gcc -fPIC -lm -shared extension-functions.c -o libsqlitefunctions.so

  • =>然后出现上面提到的错误。

    我在做什么呢?

    最佳答案

    打印int64_t的正确方法是:

    #include <inttypes.h>
    ...
    printf("%d => %" PRId64 "\n", ee, c);
    

    在程序/库中,您可以更改打印方式以获得所需的结果。

    可以在here中找到打印格式的完整列表。您可以使用脚本来修复打印。

    关于c++ - 如何在Ubuntu上为sqlite3安装extension-functions.c,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36937973/

    10-13 05:09