我正在学习使用 __attribute__ ((visibility("default")))
进行符号导出
// a.cpp
class A
{
public:
__attribute__ ((visibility("default"))) void func() {;};
__attribute__ ((visibility("default"))) int cnt;
};
但是我遇到了以下问题
# g++ -c a.cpp
a.cpp:5:50: warning: ‘visibility’ attribute ignored [-Wattributes]
__attribute__ ((visibility("default"))) int cnt;
^~~
成员函数和成员变量有什么区别? 为什么一个可以导出符号而另一个不能?
最佳答案
成员函数实际上只是具有特殊签名的普通函数,用于容纳隐藏的 this
参数。因此,您可以像其他全局函数一样向它们附加可见性属性。
相反,成员变量并不对应于全局实体 - 它们只是类对象占用的内存内偏移量的符号名称。因此,为它们附加可见性是没有意义的。
关于c++ - 成员函数和成员变量在符号上有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69073602/