当前位置: 首页 > 知识库问答 >
问题:

gcc 4.1.2 上的加速进程间失败

司空凌
2023-03-14

我正在尝试使用Boost::Interprocess,但是在尝试使用gcc 4.1.2编译时,我遇到了一些编译器错误。我缩小了代码范围,设法在没有boost的情况下重现了问题。代码是:

#include <iostream>
static const std::size_t offset_type_alignment = 0;

template<class T, class U>
struct pointer_to_other;

template<class T, class U, template<class> class Sp>
struct pointer_to_other< Sp<T>, U >
/*144*/{
   typedef Sp<U> type;
};

template <class PointedType, class DifferenceType, class OffsetType, std::size_t OffsetAlignment>
class offset_ptr
{
};
template <class T, class DifferenceType = std::ptrdiff_t, class OffsetType = std::size_t, std::size_t Alignment = offset_type_alignment>
class offset_ptr;


template<class T, class T2, class T3, std::size_t A, class U>
/*158*/struct pointer_to_other<offset_ptr<T, T2, T3, A>, U >
{
   typedef offset_ptr<U, T2, T3, A> type;
};


template<class VoidPointer>
class message_queue_t
{
   typedef VoidPointer                                                 void_pointer;
/*167*/   typedef typename pointer_to_other<void_pointer, char>::type         char_ptr;
};

int main()
{
/*177*/       message_queue_t< offset_ptr<void, std::ptrdiff_t, std::size_t, offset_type_alignment> > test;
}

我得到的错误:

. cc:在message_queue_t实例化中

.cc:177:从这里实例化

.cc:167:错误:结构指针_to_other的类模板实例化不明确,char

。cc:144:错误:候选项为:struct pointer_to_other,U

.cc:158:错误:结构指针_ to_

。cc:167:错误:未定义类型的无效使用-结构pointer_to_other,char

.cc:140:错误:声明–struct pointer_to_other,char

在 MSVS 中,这可以正常编译。Ideone编译也很好,但它使用gcc 4.3.4。

重要

  • 更改编译器是不可能的
  • 我知道Boost::Interprocess没有用这个版本的gcc进行测试

我要找的是一个解决办法。有什么想法吗?

PS -模板是boost的一部分,但是缩小了,所以我真的不能改。我有什么办法可以改变:

 message_queue_t< offset_ptr<void, std::ptrdiff_t, std::size_t, offset_type_alignment> > test;

为了让它工作?

共有1个答案

易宣
2023-03-14

这是编译器的限制。简直不支持。

 类似资料:
  • 问题内容: 如何使用C语言在ubuntu linux机器上查找进程开始时间。在linux中,/ proc / [pid] / stat文件提供信息 和文件/ proc / stat给出 为了将这两个值相加,我如何将以前的值转换成秒,因为它是以jiffies为单位。 问题答案: 当人们编译Linux内核时,每秒Jiffies是可配置的。 以下程序使用您正在运行的内核上每秒的跳动次数。它带有一个可选的

  • 问题内容: 我正在尝试快速实施AES加密。Android和C#的加密解密工作正常。我需要迅速实施它。这是android 的当前代码,其后是C#。 我尝试使用 CryptoSwift 跨平台AES加密 但是,这些都不起作用。当我在服务器上发送加密的字符串时,它没有被解密。 任何帮助将不胜感激 问题答案: 确保使用相同的参数,这些参数似乎是带有iv (实际上是PKCS#7)填充和16字节(128位)密

  • 我正在做一个自上而下的视图游戏,在游戏中敌人向特定的位置移动。被移动的目的地经常会发生剧烈的变化--有时敌人还在向前一个目的地移动的时候…… 我想要实现比直线移动更真实的移动,所以当敌人在目的地之间切换时,应该有一些加速和减速。 转向(方向)不是一个因素。你可能会认为sprites会像气垫船一样移动,在目的地之间以最快的速度进行加速和减速。 最后一个考虑是,敌人不仅有一个“最大速度”值,而且还有一

  • 所以我在做一个程序,在这里你可以有两个对象(圆)。我希望它们像行星一样围绕彼此运行,但只能是二维的。 我知道用牛顿万有引力定律,我可以得到两个物体之间的力。我也知道A=F/m,我的问题是我如何从前面的方程中得到A并把它变成一个向量?

  • 我正在使用scrypt制作一个Android应用程序,它需要很长的时间来计算散列。我是这样称呼它的:

  • 问题内容: 是否有关于Linux上同一进程的线程之间进行上下文切换的成本的任何良好的经验数据(主要是x86和x86_64)?我说的是一个线程在用户空间中执行的最后一条指令在自愿或非自愿进入睡眠之前执行的最后一个指令之间的周期数或纳秒数,同一进程的另一个线程在同一CPU /内核唤醒后执行的第一条指令之间的周期数或纳秒数。 我编写了一个快速测试程序,该程序在分配给同一cpu / core的2个线程中不