GCC的“受保护”可见性属性的行为是什么?

时间:2018-07-05 17:23:04

标签: c++ gcc g++

在处理导出的符号时,GCC会自动导出所有符号(遵循__attribute__((visibility("default)))的行为)。您可以使用-fvisibility=hidden或通过手动设置每个符号以具有所需的行为来更改此行为。

这两个设置是经常使用的唯一设置,但可见性设置也有protectedinternal选项。 GCC表示,这些选项“在实际使用中几乎没有用”,但我仍然想知道它们的作用,并且在手册页或Google的其他地方都没有看到任何有关此的信息。

他们做什么?它们有实际用途吗?

编辑:有人帮助我指出了an explanation of internal,但是protected属性的作用是什么? The function attributes page

  

具有隐藏链接的对象的两个声明,如果它们在同一共享对象中,则引用同一对象。

但这是什么意思?以下代码是否有效?

__attribute__((visibility("hidden"))) int a = 4;
...    
...
__attribute__((visibility("hidden"))) int a = 9;
...
...
__attribute__((visibility("hidden"))) char a = 'a';

0 个答案:

没有答案