在头文件中实现的结构是否需要 __attribute__((visibility("default"))) ? (C++)

问题描述 投票:0回答:2

我不确定在头文件中完全实现

struct
在用作共享库的一部分时是否会对
__attribute__(( visibility("default")))
的需要产生任何影响。

c++ api shared-libraries visibility
2个回答
1
投票

您不需要将完全内联类的可见性设置为默认值。实际上添加它是不可取的,因为它会强制从包含此标头的所有共享模块导出类的符号,这会增加二进制文件的大小并减慢启动速度。


0
投票

如果您使用

进行编译
-fvisibility=hidden

所有导出的函数和变量设置为可见性默认值,因此共享库的用户可以在执行时使用:

nm -C -D <library>.so

然后您可以看到将其设置为默认值和未设置为默认值时的差异。

© www.soinside.com 2019 - 2024. All rights reserved.