level 1
冰点零度℉
楼主
百度了下weak_alias,大概了解了一下,不过他们好像都是这么使用的:
name1() __attribute__ ((weak,alias("name2"))); // 大概是这么使用的吧。。。
所以感觉weak_alias应该是个宏?
我是在看代码时发现的weak_alias。
在argv.h头文件中作如下声明(参数列表太长了。。省掉
):
extern error_t __argz_create (...) __THROW;
extern error_t argz_create (...) __THROW;
然而实际在argz-create.c中仅仅实现了上述声明的第一个函数:
error_t __argz_create (...)
{
balabalabalabala....
return 0;
}
我就想这声明两个函数,仅仅实现一个,这不应该吖~~~
然后看到后面紧跟着一个:
weak_alias (__argz_create, argz_create)
这是不是说把这两个函数联系到了一起?它们实际是一个函数,共用一个具体实现?
这东西我们能直接在自己的代码中使用么?就像它那样直接使用可以哒?
看起来好像很酷的样子~
2015年09月28日 16点09分
1
name1() __attribute__ ((weak,alias("name2"))); // 大概是这么使用的吧。。。
所以感觉weak_alias应该是个宏?
我是在看代码时发现的weak_alias。
在argv.h头文件中作如下声明(参数列表太长了。。省掉
extern error_t __argz_create (...) __THROW;
extern error_t argz_create (...) __THROW;
然而实际在argz-create.c中仅仅实现了上述声明的第一个函数:
error_t __argz_create (...)
{
balabalabalabala....
return 0;
}
我就想这声明两个函数,仅仅实现一个,这不应该吖~~~
然后看到后面紧跟着一个:
weak_alias (__argz_create, argz_create)
这是不是说把这两个函数联系到了一起?它们实际是一个函数,共用一个具体实现?
这东西我们能直接在自己的代码中使用么?就像它那样直接使用可以哒?
看起来好像很酷的样子~