c++ - 成员函数和成员变量在符号方面有什么区别?
问题描述
我正在学习__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
参数的普通函数。因此,您可以像其他全局函数一样将可见性属性附加到它们。
相反,成员变量不对应于全局实体——它们只是类对象占用的内存中偏移量的符号名称。因此,将可见性附加到它们是没有意义的。
推荐阅读
- asp.net-core - 为对象创建 HiddenFor() 字段
- if-statement - 使用 IF 函数,得到“太多
- vba - 尝试使用 Outlook VBA 更改随机选择的电子邮件的颜色类别
- excel - 查找对应的文本
- java - 如何在android中提取SIM卡数据
- ios - 何时在 CarPlay 中使用 beginUpdates() 和 endUpdates()
- react-native - React Native 中心按钮在另一个下对齐
- python - Python - 创建具有多个源和条件的数据框的方法
- android - 为什么每次在手机上运行新的颤振代码时都会获得默认的颤振示例代码?
- javascript - 如果它为零,如何隐藏图例文本?