Qt 源码学习日志 - corelib->kernel->qmath

这篇博客记录了作者在研究Qt for Android源码时,对corelib/kernel/qmath.h和qmath.cpp的探索。重点介绍了QT_BEGIN_HEADER和QT_END_HEADER宏如何处理符号签名,QT_MODULE如何处理Qt的许可证,以及Q_CORE_EXPORT宏在不同编译器下的实现,特别是__attribute__((visibility("default")))在GCC中的作用和影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在开始研究 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    假定的符号可见性可通过其他选项进行更改。缺省可见性将覆盖此类更改。缺省可见性与外部链接对应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值