-1
"malloc"함수 포인터를 반환 할 수있는 함수를 작성하려고합니다.typedef없이 return 함수 포인터 오류가 발생 했습니까?
#include <cstdlib>
namespace portable {
static void *(*malloc_impl)(size_t) = std::malloc;
static void (*free_impl)(void*) = std::free;
static void *(*realloc_impl)(void*, size_t) = std::realloc;
static void *(*calloc_impl)(size_t, size_t) = std::calloc;
#if defined(_WIN32) && defined(__MINGW32__)
# error("sorry, we don't support MinGW32 compiler with Windows")
#endif
#if defined(_WIN32) && defined(_MSC_VER)
# include <WinSock2.h>
# include <Windows.h>
static size_t (*malloc_usable_size_impl)(void*) = _msize;
#elif defined(__APPLE__)
# include <malloc.h>
static size_t (*malloc_usable_size_impl)(void*) = malloc_size;
#else
# include <malloc.h>
static size_t (*malloc_usable_size_impl)(void*) = malloc_usable_size;
#endif
void *(*o_set_malloc(void *(*func)(size_t))) (size_t) throw()
{
void *(*old)(size_t) = malloc_impl;
if (func) {
malloc_impl = func;
}
return old;
}
size_t (*o_set_malloc_usable_size(size_t (*func)(void*))) (void*) throw()
{
size_t (*old)(void*) = malloc_usable_size_impl;
if (func) {
malloc_usable_size_impl = func;
}
return old;
}
void (*o_set_free(void (*func)(void*))) (void*) throw()
{
void (*old)(void*) = free_impl;
if (func) {
free_impl = func;
}
return old;
}
void *(*o_set_realloc(void *(*func)(void*, size_t))) (void*, size_t) throw()
{
void *(*old)(void*, size_t) = realloc_impl;
if (func) {
realloc_impl = func;
}
return old;
}
void *(*o_set_calloc(void *(*func)(size_t, size_t))) (size_t, size_t) throw()
{
void *(*old)(size_t, size_t) = calloc_impl;
if (func) {
calloc_impl = func;
}
return old;
}
}
컴파일러 보고서 오류 :
심각도 코드 설명
그러나 오류가있어,이 플랫폼은 2015 년
소스 코드 "malloc.cpp"비주얼 스튜디오 + 윈도우 7 프로젝트 파일 줄 억제 상태 오류 (활성)
호환되지 않는 예외 사양
d : \ work \ project \ orange \ src \ portable \ malloc.cpp 56
반환 유형과 호환되지 않는 것 같습니다. 도와주세요.
그냥 질문에 답하십시오. – linrongbin
[mcve]가 도움이 될 것입니다. http://webcompiler.cloudapp.net/에서 컴파일러 오류를 재현 할 수 없습니다. – chris