Qt 源码学习日志 - corelib->kernel->qmath
来源:互联网 发布:基于关联规则推荐算法 编辑:程序博客网 时间:2024/05/22 09:45
现在开始研究 Qt for Android 源码。
利用blog,做好笔记。
今天研究 android-lighthouse/src/corelib/kernel/qmath.h 和 qmath.cpp
1、 QT_BEGIN_HEADER 和 QT_END_HEADER 宏: 根据不同平台,定义 extern "C" 或者 extern "C++" (符号签名方法)
2 、QT_MODULE 处理 Qt 的许可证信息
#define QT_MODULE(x) /
typedef QtValidLicenseFor##x##Module Qt##x##Module;
3、Q_CORE_EXPORT 这个宏展开之后,在VC++(或者采用与VC++类似技术)的编译器中,是定义为 __declspec((dllexport)) 。而在UNIX系统的编译器中(gcc、cc),展开就是 __attribute__ ((visibility("default")).
__attribute__ ((visibility(" <type> ")) 影响 ELF 文件中,符号的可见性(这是gcc的扩展编译器指令)
<t
是下列值之一:ype>
default
假定的符号可见性可通过其他选项进行更改。缺省可见性将覆盖此类更改。缺省可见性与外部链接对应。
hidden
该符号不存放在动态符号表中,因此,其他可执行文件或共享库都无法直接引用它。使用函数指针可进行间接引用。
internal
除非由 特定于处理器的应用二进制接口 (psABI)指定,否则,内部可见性意味着不允许从另一模块调用该函数。
protected
该符号存放在动态符号表中,但模块内的引用将与局部符号绑定。也就是说,另一模块无法覆盖该符号。
可在 C 和 C++ 中使用此属性。在 C++ 中,还可将它应用于类型、成员函数和命名空间声明。
示例
void __attribute__((visibility(“internal”))) foo()
{
....
}
4、inline 函数类型(以前以为inline是C++的用法)。 inline函数,必须把函数体和函数声明放在一起才有效,否则当作普通函数。
inline函数的执行,是直接使用函数代码(函数的代码直接存入符号表,因此该函数不能太大,而且经常被调用。inline函数的引入是
为了解决频繁调用的小函数调用占用太多栈空间的问题。)
5、定义函数 qCeil(调用的其实是glibc中的 ceil 或者 ceilf)取大于这个浮点数的最小整数
定义函数 qFloor ( glibc:: floor() or floorf() ) 取小于这个浮点数的最大整数
qFabs <-> fabs / fabsf 浮点数取绝对值
qSin <-> sin / sinf
....
总结:
qmath.cpp 和 qmath.h 封装了一下 glibc的 math.h 中定义的函数。其实只有这么几个:
qCeil , 进位 & 取整
qFloor, 舍弃小数点 & 取整
qFabs, 取绝对值(浮点数)
qSin, qCos 正(余)弦函数
qTan 正切
qACos, qASin, qATan, 反正弦,反余弦,反正切
qATan2, 反正切(x/y)
qSqrt, qLn, qExp, qPow 开平方根,取对数(调用glibc中的log), 平方,幂运算
另外qMath自己实现了一个加快正弦、余弦计算速度的函数: qFastSin, qFastCos 。怎么计算就不研究了。
结束。
- Qt 源码学习日志 - corelib->kernel->qmath
- Qt源码分析之corelib
- Qt 动态显示日志源码
- Qt学习日志 - 第一章
- Qt stylesheet 源码学习
- Qt stylesheet 源码学习
- Qt stylesheet 源码学习
- Qt stylesheet 源码学习
- Qt stylesheet 源码学习
- Qt学习日志 - 第二章
- Qt学习日志 - 第三章
- Qt学习日志-第四章
- Qt学习日志-第五章
- QT学习日志(一)
- Qt源码学习(从Win32到Qt)
- Java日志学习五:JDK Logger源码
- android学习日志—Handler源码分析
- android学习日志—AsyncTask源码分析
- Miami's Little Havana Showcases Cuban Life
- wireshark 抓取telnet登录用户名和密码
- 文件操作
- 数组指针、指针数组、指向指针的指针使用总结
- 20110425
- Qt 源码学习日志 - corelib->kernel->qmath
- 第八周20110418------20110424
- 去掉链接的虚线框的解决办法
- 网页特效——图片翻页和图片滚动的实现方法
- Struct 和 Class 的区别
- windows上开发android源码 C++ 环境搭建
- C++中函数指针的使用
- test eax,eax
- ioctl获得ip、maska、ddress程序