报错:
/tmp/cc3R3ayZ.o: In function 'main'
c.cpp:(.text+0x9): undefined reference to 'sdsempty()'
collect2: error: ld returned 1 exit status**
#include <iostream>
#include <unistd.h>
#include <sds.h>
using namespace std;
int main(){
sds s= sdsempty();
return 0;
}
我更新了sds文件,然后:
[root@localhost c4]# g++ -std=c++11 -o test -I/wgs/sds c.cpp
In file included from c.cpp:3:0:
/wgs/sds/sds.h: In function ‘size_t sdsavail(sds)’:
/wgs/sds/sds.h:83:87: error: invalid conversion from ‘void*’ to ‘sdshdr8*’ [-fpermissive]
#define SDS_HDR_VAR(T,s) struct sdshdr##T *sh = (void*)((s)-(sizeof(struct sdshdr##T)));
^
/wgs/sds/sds.h:111:13: note: in expansion of macro ‘SDS_HDR_VAR’
SDS_HDR_VAR(8,s);
^
/wgs/sds/sds.h:83:87: error: invalid conversion from ‘void*’ to ‘sdshdr16*’ [-fpermissive]
#define SDS_HDR_VAR(T,s) struct sdshdr##T *sh = (void*)((s)-(sizeof(struct sdshdr##T)));
^
/wgs/sds/sds.h:115:13: note: in expansion of macro ‘SDS_HDR_VAR’
SDS_HDR_VAR(16,s);
^
/wgs/sds/sds.h:83:87: error: invalid conversion from ‘void*’ to ‘sdshdr32*’ [-fpermissive]
#define SDS_HDR_VAR(T,s) struct sdshdr##T *sh = (void*)((s)-(sizeof(struct sdshdr##T)));
^
/wgs/sds/sds.h:119:13: note: in expansion of macro ‘SDS_HDR_VAR’
SDS_HDR_VAR(32,s);
^
/wgs/sds/sds.h:83:87: error: invalid conversion from ‘void*’ to ‘sdshdr64*’ [-fpermissive]
#define SDS_HDR_VAR(T,s) struct sdshdr##T *sh = (void*)((s)-(sizeof(struct sdshdr##T)));
^
/wgs/sds/sds.h:123:13: note: in expansion of macro ‘SDS_HDR_VAR’
SDS_HDR_VAR(64,s);
^
这个是啥原因啊?