C++ 如何在Solaris 10上更换posix_memalign
我有以下代码,它是CRFsuite库的一部分。我已经为此库创建了一个R包装,但由于Solaris 10上未定义C++ 如何在Solaris 10上更换posix_memalign,c++,c,solaris,solaris-10,C++,C,Solaris,Solaris 10,我有以下代码,它是CRFsuite库的一部分。我已经为此库创建了一个R包装,但由于Solaris 10上未定义posix_memalign,因此在Solaris 10上安装失败。 为了在Solaris 10上正确编译,需要如何更改以下代码(的一部分)?显示了供参考的安装错误 #包括 #包括 #如果已定义(_MSC_VER)|已定义(uuu MINGW32_uuuuuuuu)|已定义(uuu MINGW64_uuuuuuu) #包括 #否则 #包括 静态内嵌void*_-aligned_-mall
posix_memalign
,因此在Solaris 10上安装失败。
为了在Solaris 10上正确编译,需要如何更改以下代码(的一部分)?显示了供参考的安装错误
#包括
#包括
#如果已定义(_MSC_VER)|已定义(uuu MINGW32_uuuuuuuu)|已定义(uuu MINGW64_uuuuuuu)
#包括
#否则
#包括
静态内嵌void*_-aligned_-malloc(大小、大小对齐)
{
void*p;
int ret=posix_memalign(&p,对齐,大小);
收益率(ret==0)?p:0;
}
静态内联void\u aligned\u free(void*p)
{
自由基(p);
}
#恩迪夫
我尝试过使用一些可用的修复程序,但失败得很惨。希望您能提供帮助。您应该能够使用()
。。。
#elif已定义uu SunOS_5_10
#包括
静态内嵌void*_-aligned_-malloc(大小、大小对齐)
{
返回memalign(对齐,大小)
}
静态内联void\u aligned\u free(void*p)
{
自由基(p);
}
#否则
...
您应该能够使用()
。。。
#elif已定义uu SunOS_5_10
#包括
静态内嵌void*_-aligned_-malloc(大小、大小对齐)
{
返回memalign(对齐,大小)
}
静态内联void\u aligned\u free(void*p)
{
自由基(p);
}
#否则
...
谢谢!使用memalign确实是解决方案。谢谢!使用memalign确实是解决方案。
#include <math.h>
#include <memory.h>
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
#include <malloc.h>
#else
#include <stdlib.h>
static inline void *_aligned_malloc(size_t size, size_t alignment)
{
void *p;
int ret = posix_memalign(&p, alignment, size);
return (ret == 0) ? p : 0;
}
static inline void _aligned_free(void *p)
{
free(p);
}
#endif
...
#elif defined __SunOS_5_10
#include <stdlib.h>
static inline void *_aligned_malloc(size_t size, size_t alignment)
{
return memalign(alignment, size)
}
static inline void _aligned_free(void *p)
{
free(p);
}
#else
...