我从这里复制粘贴一些代码,无法编译.这部分问题:
struct pkt_buf { /* I/O address corresponding to the start of this pkt_buf struct */ ef_addr ef_addr;
我有这个错误:
openonload-201509/src/include/etherfabric/ef_vi.h:119:33: error: changes meaning of ‘ef_addr’ from ‘typedef uint64_t ef_addr’ [-fpermissive] typedef uint64_t ef_addr;
据我所知,我不能对类型和字段使用相同的名称.但我链接的库被广泛使用,它必须编译.我的编译器设置可能有问题吗?我怎样才能编译我的代码?
源代码是efsink.c
C文件.
此代码在C中有效,但在C++中无效(我认为).
您应该使用C编译器来编译C文件.C和C++是不同的语言.
主要的C++编译器也捆绑了一个C编译器,通常他们根据文件名自动检测语言(但这可以用开关覆盖).
您可以拥有一个包含一些C文件和一些C++文件的项目,但您必须为C文件使用C编译器,并为C++文件使用C++编译器.