Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Solaris 10上更换posix_memalign_C++_C_Solaris_Solaris 10 - Fatal编程技术网

C++ 如何在Solaris 10上更换posix_memalign

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

我有以下代码,它是CRFsuite库的一部分。我已经为此库创建了一个R包装,但由于Solaris 10上未定义
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 
 ...