我试图使用此链接中提供的intructions运行Remy项目(与计算机生成的网络协议相关)源代码; https://github.com/tcpexmachina/remy。代码也来自此链接。
我使用的是protobuf 3.5.1版本,Ubuntu版本是14.04。当我运行' make'按照自述文件中的说明分别运行./autogen.sh和./configure后命令,我收到此错误:
In file included from configrange.hh:4:0,
from evaluator.cc:3:
../protobufs/dna.pb.h:4210:20: error: base class ‘struct
google::protobuf::internal::integral_constant<bool, true>’ has a
non-virtual destructor [-Werror=effc++]
template <> struct is_proto_enum< ::RemyBuffers::MemoryRange_Axis> :
::google::protobuf::internal::true_type {};
我查看了存储库的问题部分,但没有列出任何此类错误。是否有可能该项目使用旧版本的protobuf导致此错误?还有人可以解释什么是&#34; -Werror = effc ++&#34;旗? 如果有人在此之前遇到此错误或有任何此类问题的经验,请帮我解决此错误。 三江源
答案 0 :(得分:1)
标记-Weffc++
会在您的代码违反Scott Meyers在其书籍( Effective C ++ 系列)中定义的任何样式指南时启用警告。
其中一条指南告诉我们基类应该已经定义了虚拟析构函数 - 并且你有关于它的编译器消息。其他指南是
Define a copy constructor and an assignment operator for classes with dynamically-allocated memory. Prefer initialization to assignment in constructors. Have operator= return a reference to *this. Don’t try to return a reference when you must return an object. Distinguish between prefix and postfix forms of increment and decrement operators. Never overload &&, ||, or ,.
通过启用-Weffc++
,您将只获得警告,但我在{编译器标志列表'中也定义了-Werror
。 -Werror
将所有警告变为错误
并且您的编辑已中止。我认为你应该从编译器标志列表中删除Weffc++
或-Werror
来编译你的代码。