- 论坛徽章:
- 0
|
本帖最后由 csern 于 2011-02-28 22:23 编辑
math.h 里include了3次/usr/include/bits/mathcalls.h,每次include都会利用宏产生2个函数定义。
以sqrt为例,产生了sqrt, __sqrt, sqrtf, __sqrtf, sqrtl, __sqrtl,
以第一次- #define _Mdouble_ double
- #define __MATH_PRECNAME(name, r) __CONCAT(name,r)
复制代码 为例:
- __MATHCALL(sqrt, , (_Mdouble_ __x));
复制代码 -->- __MATHCALL(sqrt, , (double __x));
复制代码 -->- __MATHDECL(double, sqrt, , (double __x));
复制代码 -->- __MATHDECL_1(double, sqrt, , (double __x));
- __MATHDECL_1(double, __sqrt, , (double __x));
复制代码 -->- extern double __MATH_PRECNAME(sqrt,)(double __x) __THROW;
- extern double __MATH_PRECNAME(__sqrt,)(doubel __x) __THROW;
复制代码 -->- extern double sqrt(double __x);
- extern double __sqrt(double __x);
复制代码 以后两次类似,全是宏游戏 |
|