在头文件中完成实现的结构是否需要 __attribute__((可见性( "default" )))?(C++)

Is __attribute__((visibility("default"))) needed for structs whose implementation is done in the header file? (C++)

本文关键字:attribute 可见性 default C++ 文件 实现 是否 结构      更新时间:2023-10-16

我不确定在标题文件中完全实现了struct是否会对其" _attribute ______________________________________则)"共享库的一部分。

您不需要将可见性设置为完全内联类的默认值。实际上添加它是不可取的,因为它将强制迫使类的符号从所有共享模块中导出,其中包括此标头,该模块将增加二进制文件的大小和较慢的启动。

如果您正在使用

编译
-fvisibility=hidden

所有导出的功能和变量设置为可见性默认值,因此您共享库的用户可在执行时出现:

nm -C -D <library>.so

然后,当您将其设置为默认情况时,并且当您不默认时,您可以看到差异。