초시 단언
2321 단어 단언
#include <stdio.h>
#include <stdlib.h>
//#define NDEBUG // NDBUG
#include <assert.h>
typedef unsigned char byte;
#define DEBUG //
/* memcpy ─── */
void* memcpy(void* pvTo, void* pvFrom, size_t size)
{
byte* pbTo = (byte*)pvTo;
byte* pbFrom = (byte*)pvFrom;
if(pvTo == NULL || pvFrom == NULL)
{
fprintf(stderr, "Bad args in memcpy
");
abort();
}
while(size-->0)
*pbTo++ = *pbFrom++;
return(pvTo);
}
void* memcpy2(void* pvTo, void* pvFrom, size_t size)
{
byte* pbTo = (byte*)pvTo;
byte* pbFrom = (byte*)pvFrom;
#ifdef DEBUG
if(pvTo == NULL || pvFrom == NULL)
{
fprintf(stderr, "Bad args in memcpy
");
abort();
}
#endif
while(size-->0)
*pbTo++ = *pbFrom++;
return(pvTo);
}
void* memcpy3(void* pvTo, void* pvFrom, size_t size)
{
byte* pbTo = (byte*)pvTo;
byte* pbFrom = (byte*)pvFrom;
assert(NULL != pvTo && NULL != pvFrom );
while(size-->0)
*pbTo++ = *pbFrom++;
return(pvTo);
}
#ifdef DEBUG
void _Assert(char* , unsigned); /* */
#define ASSERT(f) \
if(f) \
NULL; \
else \
_Assert(__FILE__ , __LINE__)//
#else
#define ASSERT(f) NULL
#endif
void _Assert(char* strFile, unsigned uLine)
{
fflush(stdout);
fprintf(stderr, "
Assertion failed: %s, line %u
",strFile, uLine);
fflush(stderr);
abort();
}
void* memcpy4(void* pvTo, void* pvFrom, size_t size)
{
byte* pbTo = (byte*)pvTo;
byte* pbFrom = (byte*)pvFrom;
ASSERT(NULL != pvTo && NULL != pvFrom );
while(size-->0)
*pbTo++ = *pbFrom++;
return(pvTo);
}
/* memcpy ─── */
void* memcpy5(void* pvTo, void* pvFrom, size_t size)
{
byte* pbTo = (byte*)pvTo;
byte* pbFrom = (byte*)pvFrom;
ASSERT(NULL != pvTo && NULL != pvFrom ); //
ASSERT(pbFrom+size <= pbTo || pbTo+size <= pbFrom); /* ? , memmove */
while(size-->0)
*pbTo++ = *pbFrom++;
return(pvTo);
}
const int len = 20;
int main()
{
char *pchFrom = new char[len];
pchFrom[0] = 's';
pchFrom[1] = '\0';
char *pchTo = NULL;
//memcpy3(pchTo, pchFrom,len);
//memcpy4(pchTo, pchFrom,len);
memcpy5(pchTo, pchFrom,len);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
초시 단언#include <stdio.h> #include <stdlib.h> //#define NDEBUG //禁用NDBUG #include <assert.h> typedef unsigned char byte; #defin...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.