很难理解这个宏

时间:2012-03-22 04:39:26

标签: c linux

#define __HAVE_ARCH_STRCPY

__HAVE_ARCH的含义是什么?我不是母语人士而且我没有通过谷歌找到它的含义...(也许这个问题很愚蠢)

2 个答案:

答案 0 :(得分:2)

通过定义__HAVE_ARCH_XXXX预处理器令牌,它允许OS内核中的其他位置测试当前硬件平台是否支持strcpymemset等功能。您会注意到,在某些平台上,定义了此标记,然后将这些函数的基本实现定义为内联函数以及令牌,因为在这些平台上,某些其他内核库或内核代码不提供该功能模块。在其他平台上,函数在其他一些代码模块中定义,并且可以在预处理器令牌之后简单地声明为extern

请记住,Linux中的内核本身无法访问标准libc库,因此这些函数必须与通常在与libc链接的用户域应用程序中使用的函数分开定义。因此,定义哪些标准函数以及哪些标准函数不存在非常重要,因为它可能因平台而异。

答案 1 :(得分:2)

“这个架构有strcpy()”。