小编Yor*_*lov的帖子

更好的提升参考?

真正让我反感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++ documentation boost

29
推荐指数
1
解决办法
2372
查看次数

gdb将内存地址解释为对象

我正在根据可用的核心转储调查崩溃.应用程序崩溃是一个C++程序,使用gcc构建并在RH5上运行.回溯似乎有效,直到#1帧.试图打印我得到的对象 <invalid address>, <error reading variable> 因为我从#2帧获得对象的地址是一个有效的假设,我可以以某种方式"转储"分配对象的内存并仍然收集一些信息.此外,我可以强制gdb打印地址,就好像它是一个对象,而不是试图猜测对象是如何对齐的,即使它检测到一些错误.我的想法是,对象可能已被删除,但也许内存仍然存在,我可以打印一些成员变量.

请评论是否可能,如果是的话,应该如何用gdb术语来完成.10X.

c++ linux gdb

14
推荐指数
1
解决办法
2万
查看次数

gcc默认析构函数的异常规范

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上发生的事情.什么是改变,什么是正确的编译器行为,除了在派生类中手动添加空析构函数(例如编译器标志)之外,还有一些简单的解决方案.

c++ linux gcc exception throw

8
推荐指数
1
解决办法
7904
查看次数

适用于Linux的发布管理系统

我们公司需要的是一种Linux/C++版本管理工具.我们的产品包含多个库和配置文件.在这里,我将列出我们希望这样的系统具有的基本功能:

  • 能够跟踪依赖关系,轻松增加依赖关系得到主要版本的库的主要版本.它应该在内部构建某种依赖图,以便知道谁受到更新的影响.

  • 知道如何构建它所处理的产品.要么是特定的构建文件,要么更好 - 能够阅读和理解makefile.

  • 使用SVN,以便从那里检查新版本并进行构建.

  • 生成一些安装程序 - 以rpm或tar.gz格式.为此,它应该能够理解rpm spec文件格式.

目前我们正在研究这种已经很有用的工具.但是我相信我们的任务并不是独一无二的,应该有一些工具可以完成这项工作.

c++ linux rpm release-management

7
推荐指数
1
解决办法
1260
查看次数

gcc在编译时或链接时的可行性

我正在尝试使用gcc的可行性功能来限制共享库的ABI。但是我感到困惑的是正确的方法。

我的makefile分两个阶段组织构建过程。第一步,使用某些gcc选项将所有.cpp文件构建为目标文件。然后,使用另一组gcc和ld选项将所有目标文件链接在一起。据我了解,可行性与第二步有关。但是,这与我观察者的结果相矛盾。如果我在编译时选项中添加fvisibility = hidden,结果与预期的一样,nm -D报告的导出符号要少得多。相反,如果我将其添加到链接时间选项中,似乎不会影响构建。

在寻找解释时,我比较了带有和不带有可行性的目标文件。差异似乎在于目标文件中符号的地址。但是,我不知道地址的这种差异如何将消息传递给链接器,以便它能够在一种情况下隐藏符号,而在另一种情况下暴露符号。

任何人都可以向我解释一下。感谢您的时间。

c++ linker gcc

5
推荐指数
1
解决办法
549
查看次数

提升消息队列

我有以下boost :: interprocess :: message_queue相关问题.

按照预期,我计划在> = 2个进程之间共享一个消息队列.显然,其中一个可能在消息队列中崩溃.因此,它将保留内部锁,使其他进程无法访问队列.怎么解决这个问题?似乎没有办法解锁使用的内部互斥锁.

boost message-queue boost-interprocess

5
推荐指数
1
解决办法
1092
查看次数

如何将现有项目添加到Geany中

我有一个使用Gnu Make构建的现有C++项目.我想在Geany下开发源代码,但我找不到导入它的方法.

c++ linux geany

5
推荐指数
2
解决办法
8682
查看次数

epoll中观看的文件描述符数

我正在寻找一种方法来检查epoll实例正在监视的文件描述符的当前数量.我使用以下内容来创建和填充epoll实例

epoll_create
epoll_ctl
Run Code Online (Sandbox Code Playgroud)

平台是Gnu/Linux.

linux epoll

5
推荐指数
1
解决办法
818
查看次数

按位移位将unsigned char提升为int

以下代码:

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]

这是为什么?

c++ linux gcc

5
推荐指数
1
解决办法
2650
查看次数