真正让我反感Boost的是他们的文档.我需要的是一个很好的参考,而不是解释什么是一个很好的参考,我会举例:
java.sun.com/javase/6/docs/api/是的,我喜欢它.它也是:cppreference.com/wiki/stl/vector/start
另一方面,我发现有关boost的内容是这样的:http: //www.boost.org/doc/libs/1_40_0/libs/smart_ptr/shared_ptr.htm
基本上是一些长文本.几乎没有格式化,一些大胆的文本在这里和那里,希望元素之间的一些链接.更不用说smart_ptr是更好的文档库之一.
如果您没有找到此示例与上述示例之间的区别,请停止阅读并忽略此帖子.不要误会我的意思,我写C++并使用Boost.在我的公司,我们至少使用了4个库,但是每次我需要检查一个方法原型时,例如它让我从脑子里滚动浏览他们的文章.是的,我知道Boost是一个协作项目,不同的团队由不同的团队开发.
那么你们中的任何人都对Boost的参考感到失望吗?你知道一些更好的网站记录Boost库吗?
我正在根据可用的核心转储调查崩溃.应用程序崩溃是一个C++程序,使用gcc构建并在RH5上运行.回溯似乎有效,直到#1帧.试图打印我得到的对象
<invalid address>, <error reading variable>
因为我从#2帧获得对象的地址是一个有效的假设,我可以以某种方式"转储"分配对象的内存并仍然收集一些信息.此外,我可以强制gdb打印地址,就好像它是一个对象,而不是试图猜测对象是如何对齐的,即使它检测到一些错误.我的想法是,对象可能已被删除,但也许内存仍然存在,我可以打印一些成员变量.
请评论是否可能,如果是的话,应该如何用gdb术语来完成.10X.
class A
{
public:
virtual ~A()
{
}
};
class B : virtual public A
{
public:
~B() throw()
{}
};
class C : public B
{
};
int main(int argc, char * argv [])
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该代码给出以下错误:
error: looser throw specifier for ‘virtual C::~C()’
error: overriding ‘virtual B::~B() throw ()’
Run Code Online (Sandbox Code Playgroud)
在我的debian测试中(gcc(Debian 4.6.0-10)4.6.1 20110526(预发布))但在先前的gcc版本上编译没有错误(我的debian系统再次4.5).
异常规范如何影响虚拟析构函数覆盖? 根据该答案,编译器应该创建一个与基类的throw声明匹配的默认构造函数.显然这不是新gcc上发生的事情.什么是改变,什么是正确的编译器行为,除了在派生类中手动添加空析构函数(例如编译器标志)之外,还有一些简单的解决方案.
我们公司需要的是一种Linux/C++版本管理工具.我们的产品包含多个库和配置文件.在这里,我将列出我们希望这样的系统具有的基本功能:
能够跟踪依赖关系,轻松增加依赖关系得到主要版本的库的主要版本.它应该在内部构建某种依赖图,以便知道谁受到更新的影响.
知道如何构建它所处理的产品.要么是特定的构建文件,要么更好 - 能够阅读和理解makefile.
使用SVN,以便从那里检查新版本并进行构建.
生成一些安装程序 - 以rpm或tar.gz格式.为此,它应该能够理解rpm spec文件格式.
目前我们正在研究这种已经很有用的工具.但是我相信我们的任务并不是独一无二的,应该有一些工具可以完成这项工作.
我正在尝试使用gcc的可行性功能来限制共享库的ABI。但是我感到困惑的是正确的方法。
我的makefile分两个阶段组织构建过程。第一步,使用某些gcc选项将所有.cpp文件构建为目标文件。然后,使用另一组gcc和ld选项将所有目标文件链接在一起。据我了解,可行性与第二步有关。但是,这与我观察者的结果相矛盾。如果我在编译时选项中添加fvisibility = hidden,结果与预期的一样,nm -D报告的导出符号要少得多。相反,如果我将其添加到链接时间选项中,似乎不会影响构建。
在寻找解释时,我比较了带有和不带有可行性的目标文件。差异似乎在于目标文件中符号的地址。但是,我不知道地址的这种差异如何将消息传递给链接器,以便它能够在一种情况下隐藏符号,而在另一种情况下暴露符号。
任何人都可以向我解释一下。感谢您的时间。
我有以下boost :: interprocess :: message_queue相关问题.
按照预期,我计划在> = 2个进程之间共享一个消息队列.显然,其中一个可能在消息队列中崩溃.因此,它将保留内部锁,使其他进程无法访问队列.怎么解决这个问题?似乎没有办法解锁使用的内部互斥锁.
我有一个使用Gnu Make构建的现有C++项目.我想在Geany下开发源代码,但我找不到导入它的方法.
我正在寻找一种方法来检查epoll实例正在监视的文件描述符的当前数量.我使用以下内容来创建和填充epoll实例
epoll_create
epoll_ctl
Run Code Online (Sandbox Code Playgroud)
平台是Gnu/Linux.
以下代码:
unsigned char result;
result = (result << 4 );
Run Code Online (Sandbox Code Playgroud)
使用gcc版本4.6.4(Debian 4.6.4-2)编译,带有-Wconversion标志会导致警告
警告:从'int'转换为'unsigned char'可能会改变其值[-Wconversion]
这是为什么?