成员函数和成员变量在符号上有什么区别?
What are the differences between member functions and member variables in terms of symbols?
我正在学习使用 __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
参数的普通函数。因此,您可以将可见性属性附加到它们,就像附加到其他全局函数一样。
相反,成员变量不对应于全局实体——它们只是class对象占用的内存中偏移量的符号名称。所以给它们附加可见性是没有意义的。
我正在学习使用 __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
参数的普通函数。因此,您可以将可见性属性附加到它们,就像附加到其他全局函数一样。
相反,成员变量不对应于全局实体——它们只是class对象占用的内存中偏移量的符号名称。所以给它们附加可见性是没有意义的。