小编use*_*081的帖子

C++/Boost MPL:结构代码同样是Haskell的let,其中,

因为C++元编程是功能性的:有没有什么方法可以做任何类似于任何函数式编程语言(例如Haskell的)let或where构造的东西?

我正在使用Boost :: MPL,但希望有更多结构用于更长的元函数.拆分成几个函数很好,但在某些情况下我更喜欢let/where.

c++ boost haskell metaprogramming boost-mpl

9
推荐指数
1
解决办法
303
查看次数

如何在Gnu C++(g ++)中使用十进制浮点?

GCC 4.5在运行时库中增加了对十进制浮点的支持(http://gcc.gnu.org/gcc-4.5/changes.html).我能够编译代码,包括使用命名空间std :: decimal,然后在代码中使用decimal64等.

不幸的是,我缺少一些用于链接代码的库.我无法找出应该要求哪些库.已在gcc中启用DFP支持(--enable-decimal-float = dpd)

另外,是否应该有一些快速的方法在代码中提供十进制文字?快速,我的意思是用户定义的文字,由模板处理并在编译时翻译.我不想提供在运行时转换的双精度数(尽管性能和事实上我真的无法将评估从编译时间转移到运行时仍存在舍入问题......).我已经找到了后缀"df",但编译器似乎没有认识到这一点.

我在目标powerpc-ibm-aix7.1.0.0上使用gcc版本4.7.1.

链接器错误消息:

ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatsisd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatsidd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatsitd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_mulsd3
ld: 0711-317 ERROR: Undefined symbol: .__dpd_muldd3
ld: 0711-317 ERROR: Undefined symbol: .__dpd_multd3
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatdisd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatunsdisd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatdidd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatunsdidd
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatditd
ld: 0711-317 ERROR: Undefined …
Run Code Online (Sandbox Code Playgroud)

c++ gcc powerpc decimal

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

Linux的hrtimer - 微秒精度?

是否可以在具有微秒级精度的Linux主机上执行任务?即,我想在特定的时刻执行任务.我知道,Linux不是实时系统,但我正在寻找Linux上的最佳解决方案.

到目前为止,我已经创建了一个内核模块,设置了hrtimer并在输入回调函数时测量了抖动(我真的不太关心实际的延迟,它的抖动很重要) - 它大约是20-50us.这并不比在用户空间中使用timerfd好得多(也尝试使用进程的实时优先级,但这并没有真正改变任何东西).

我正在运行Linux 3.5.0(只是一个例子,尝试了从2.6.35到3.7的不同内核),/ proc/timer_list显示了hrtimer_interrupt,我没有在故障安全模式下运行,它禁用了hrtimer功能.尝试使用不同的CPU(Intel Atom to Core i7).

到目前为止,我最好的想法是将hrtimer与ndelay/udelay结合使用.这真的是最好的方法吗?我无法相信以微秒精度触发任务是不可能的.如果代码没有被其他任务中断,那么在模块可以接受的情况下在内核空间中运行代码会很棒.我真的不太关心系统的其余部分,任务每秒只执行几次,因此每次执行任务时使用mdelay/ndelay将CPU刻录几微秒并不重要.尽管如此,我更喜欢更优雅的解决方案.

我希望问题很清楚,发现很多关于计时器精度的主题,但没有真正回答这个问题.

linux kernel module real-time timer

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

C++模板:使用模板参数分离定义和实现

说实话,我真的不知道如何命名这个问题.我只会显示不起作用的代码:

template<int SIZE>
struct bar{

};

template<int SIZE>
struct foo{
    template<int X>
    void f(bar<X> b);
};

template<int SIZE, int X>
void foo<SIZE>::f(bar<X> b){

}


int main(){
    foo<1> f;
    bar<2> b;
}
Run Code Online (Sandbox Code Playgroud)

我想将定义与实现分开以避免循环依赖问题.分离仅在头文件中完成,我不想将模板代码放入cpp文件中.在这种情况下,使用指针是没有选择的.已经考虑了重构,但也不是一个真正的选择.

在没有包含模板参数的参数的情况下实现foo :: f工作正常.但是,我并没有真正解决该参数的问题.

代码应该使用gcc 4.7和(甚至更重要的)Visual Studio 2010.只要所提到的平台支持,C++ 11就可以了.

解决方案,解决方法以及理论解释为什么我正在做一些完全错误的事情将受到高度赞赏.TIA.

c++ templates visual-c++ c++11

0
推荐指数
2
解决办法
362
查看次数