刚刚下载了unqlite.c和unqlite.h,在Eclipse中创建了一个新项目,从unqlite.org网站复制了其中一个示例,我得到以下错误:

21:37:51 **** Build of configuration Debug for project nosql ****
make all
Building file: ../main.cpp
Invoking: Cross G++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.cpp"
In file included from ../main.cpp:49:0:
../unqlite.h:661:8: error: declaration of ‘pgno unqlite_page::pgno’ [-fpermissive]
pgno pgno; /* Page number for this page */
^
../unqlite.h:651:15: error: changes meaning of ‘pgno’ from ‘typedef sxu64 pgno’ [-fpermissive]
typedef sxu64 pgno;
^
subdir.mk:25: recipe for target 'main.o' failed
make: *** [main.o] Error 1
21:37:51 Build Finished (took 171ms)

本来是简单的,但我不知道发生了什么。。。有人试过这家unqLite KV商店吗?
我在用
gcc版本4.9.2(Debian 4.9.2-10)
干杯
ttkdroid型

最佳答案

当在C++文件中包含UNQLIT.H,并用G++编译时,就会出现这个问题。有两种解决方案:
您可以获得lib作者生成的补丁,如下所示:https://github.com/symisc/unqlite/issues/24
或者您可以在第661行编辑unqlite.h文件替换:
pgno pgno; /* Page number for this page */

::pgno pgno; /* Page number for this page */
它将与G++编译器以及其他C++编译器一起使用。当然,您不能用c编译器用这个编辑过的头编译unqlite.c。
如果您想了解有关此错误的更多信息,这可能是一个很好的链接:typedef changes meaning
祝您今天过得愉快!

关于linux - unqlite.h:651:15:错误:将'pgno'的含义从'typedef sxu64 pgno'更改了[-fpermissive],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32971885/

10-11 07:21