|

楼主 |
发表于 2008-1-11 15:47:57
|
显示全部楼层
Post by pupilzeng;1805621
#define是预编译指令,如果它执行了的话,你不可能在链接的时候,还会看到memcpy这个函数名的。
这里是它的原定义:
#if !defined(__GNUC__) || defined(OSKIT_ARM32_SHARK)
void *memcpy(void *__to, const void *__from, unsigned int __n);
int memcmp(const void *s1v, const void *s2v, oskit_size_t size);
#else
#define memcpy __builtin_memcpy
#define memcmp __builtin_memcmp
#endif
__GNUC__应该是定义过的,因为当我把 -D__GNUC__加到makefile中的时候,编译提示__GNUC__ is redefined,而我用不到ARM架构,所以我也不用它上而提供的memcpy与memcmp,所以我把上面这段代码给注释掉了,然后又在下面写了如下:
#define memcpy __builtin_memcpy
#define memcmp __builtin_memcmp
也就是直接使用GCC的函数,编译的时候没错,就链接的时候出错,很是郁闷啊 |
|