Strict aliasing rule

本文深入探讨了严格别名规则的概念,解释了其在C/C++编程中的作用,并通过实际例子展示了如何在Cell Performance中正确应用这一规则。同时,文章还讨论了在使用Boost库时遇到的严格别名警告问题及解决方案。
/home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/api/VehicleApiBase.hpp:293:45: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::__cxx11::basic_string<char> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 293 | for (int itId = 0; itId < output.beaconsActiveID.size(); itId++) { | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/api/VehicleApiBase.hpp: In member function ‘virtual msr::airlib::WifiReturnMessage msr::airlib::VehicleApiBase::getWifiData(const string&) const’: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/api/VehicleApiBase.hpp:367:45: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::__cxx11::basic_string<char> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 367 | for (int itId = 0; itId < output.beaconsActiveID.size(); itId++) { | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/deps/eigen3/Eigen/Core:22, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/deps/eigen3/Eigen/Dense:1, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/common/VectorMath.hpp:14, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/common/Common.hpp:16, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/vehicles/multirotor/api/MultirotorRpcLibClient.hpp:7, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_settings_parser.h:9, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h:9, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/airsim_ros_wrapper.cpp:1: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h: At global scope: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/deps/eigen3/Eigen/src/Core/util/ConfigureVectorization.h:40:38: warning: attribute ignored in declaration of ‘struct PointXYZRGBI’ [-Wattributes] 40 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n) | ^~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/deps/eigen3/Eigen/src/Core/util/ConfigureVectorization.h:153:23: note: in expansion of macro ‘EIGEN_ALIGN_TO_BOUNDARY’ 153 | #define EIGEN_ALIGN16 EIGEN_ALIGN_TO_BOUNDARY(16) | ^~~~~~~~~~~~~~~~~~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h:96:3: note: in expansion of macro ‘EIGEN_ALIGN16’ 96 | } EIGEN_ALIGN16; | ^~~~~~~~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/deps/eigen3/Eigen/src/Core/util/ConfigureVectorization.h:40:38: note: attribute for ‘struct PointXYZRGBI’ must follow the ‘struct’ keyword 40 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n) | ^~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/deps/eigen3/Eigen/src/Core/util/ConfigureVectorization.h:153:23: note: in expansion of macro ‘EIGEN_ALIGN_TO_BOUNDARY’ 153 | #define EIGEN_ALIGN16 EIGEN_ALIGN_TO_BOUNDARY(16) | ^~~~~~~~~~~~~~~~~~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h:96:3: note: in expansion of macro ‘EIGEN_ALIGN16’ 96 | } EIGEN_ALIGN16; | ^~~~~~~~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/airsim_ros_wrapper.cpp: In member function ‘sensor_msgs::msg::PointCloud2 AirsimROSWrapper::get_gpulidar_msg_from_airsim(const msr::airlib::GPULidarData&, const string&, const string&) const’: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/airsim_ros_wrapper.cpp:946:26: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] 946 | point.rgb = *reinterpret_cast<float*>(&rgb); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/pd_position_controller_simple.h:18, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/pd_position_controller_simple_node.cpp:2: /opt/ros/humble/include/tf2_geometry_msgs/tf2_geometry_msgs/tf2_geometry_msgs.h:35:2: warning: #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead [-Wcpp] 35 | #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead | ^~~~~~~ In file included from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h:72, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/airsim_node.cpp:2: /opt/ros/humble/include/tf2_geometry_msgs/tf2_geometry_msgs/tf2_geometry_msgs.h:35:2: warning: #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead [-Wcpp] 35 | #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead | ^~~~~~~ In file included from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/object.hpp:15, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack.hpp:23, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/rpc_error.h:9, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/pd_position_controller_simple.h:9, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/pd_position_controller_simple_node.cpp:2: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/v1/object.hpp: In function ‘void clmdep_msgpack::v1::operator<<(clmdep_msgpack::v2::object&, const msgpack_object&)’: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/v1/object.hpp:656:16: warning: ‘void* memcpy(void*, const void*, size_t)’ copying an object of non-trivial type ‘struct clmdep_msgpack::v2::object’ from an array of ‘const msgpack_object’ {aka ‘const struct msgpack_object’} [-Wclass-memaccess] 656 | std::memcpy(&o, &v, sizeof(v)); | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~ In file included from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/object_fwd.hpp:17, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/v1/adaptor/adaptor_base_decl.hpp:14, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/adaptor/adaptor_base_decl.hpp:13, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/adaptor/adaptor_base.hpp:13, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/v1/object_decl.hpp:16, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/object_decl.hpp:14, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/object.hpp:13, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack.hpp:23, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/rpc_error.h:9, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/pd_position_controller_simple.h:9, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/pd_position_controller_simple_node.cpp:2: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/v2/object_fwd.hpp:23:8: note: ‘struct clmdep_msgpack::v2::object’ declared here 23 | struct object : v1::object { | ^~~~~~ In file included from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/vehicles/multirotor/api/MultirotorApiBase.hpp:12, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/vehicles/multirotor/api/MultirotorRpcLibClient.hpp:11, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/pd_position_controller_simple.h:13, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/pd_position_controller_simple_node.cpp:2: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/api/VehicleApiBase.hpp: In member function ‘virtual msr::airlib::MarLocUwbReturnMessage msr::airlib::VehicleApiBase::getUWBData(const string&) const’: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/api/VehicleApiBase.hpp:293:45: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::__cxx11::basic_string<char> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 293 | for (int itId = 0; itId < output.beaconsActiveID.size(); itId++) { | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/api/VehicleApiBase.hpp: In member function ‘virtual msr::airlib::WifiReturnMessage msr::airlib::VehicleApiBase::getWifiData(const string&) const’: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/api/VehicleApiBase.hpp:367:45: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::__cxx11::basic_string<char> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 367 | for (int itId = 0; itId < output.beaconsActiveID.size(); itId++) { | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/object.hpp:15, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack.hpp:23, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/rpc_error.h:9, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h:6, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/airsim_node.cpp:2: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/v1/object.hpp: In function ‘void clmdep_msgpack::v1::operator<<(clmdep_msgpack::v2::object&, const msgpack_object&)’: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/v1/object.hpp:656:16: warning: ‘void* memcpy(void*, const void*, size_t)’ copying an object of non-trivial type ‘struct clmdep_msgpack::v2::object’ from an array of ‘const msgpack_object’ {aka ‘const struct msgpack_object’} [-Wclass-memaccess] 656 | std::memcpy(&o, &v, sizeof(v)); | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~ In file included from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/object_fwd.hpp:17, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/v1/adaptor/adaptor_base_decl.hpp:14, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/adaptor/adaptor_base_decl.hpp:13, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/adaptor/adaptor_base.hpp:13, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/v1/object_decl.hpp:16, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/object_decl.hpp:14, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/object.hpp:13, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack.hpp:23, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/rpc_error.h:9, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h:6, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/airsim_node.cpp:2: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../external/rpclib/rpclib-2.3.1/include/rpc/msgpack/v2/object_fwd.hpp:23:8: note: ‘struct clmdep_msgpack::v2::object’ declared here 23 | struct object : v1::object { | ^~~~~~ In file included from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/vehicles/multirotor/api/MultirotorApiBase.hpp:12, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/vehicles/multirotor/api/MultirotorRpcLibClient.hpp:11, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_settings_parser.h:9, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h:9, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/airsim_node.cpp:2: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/api/VehicleApiBase.hpp: In member function ‘virtual msr::airlib::MarLocUwbReturnMessage msr::airlib::VehicleApiBase::getUWBData(const string&) const’: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/api/VehicleApiBase.hpp:293:45: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::__cxx11::basic_string<char> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 293 | for (int itId = 0; itId < output.beaconsActiveID.size(); itId++) { | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/api/VehicleApiBase.hpp: In member function ‘virtual msr::airlib::WifiReturnMessage msr::airlib::VehicleApiBase::getWifiData(const string&) const’: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/api/VehicleApiBase.hpp:367:45: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::__cxx11::basic_string<char> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 367 | for (int itId = 0; itId < output.beaconsActiveID.size(); itId++) { | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/pd_position_controller_simple.h:25, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/pd_position_controller_simple_node.cpp:2: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/geodetic_conv.hpp: At global scope: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/geodetic_conv.hpp:16:15: warning: ‘geodetic_converter::kFlattening’ defined but not used [-Wunused-variable] 16 | static double kFlattening = 1 / 298.257223563; | ^~~~~~~~~~~ In file included from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/deps/eigen3/Eigen/Core:22, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/deps/eigen3/Eigen/Dense:1, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/common/VectorMath.hpp:14, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/common/Common.hpp:16, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/include/vehicles/multirotor/api/MultirotorRpcLibClient.hpp:7, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_settings_parser.h:9, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h:9, from /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/src/airsim_node.cpp:2: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h: At global scope: /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/deps/eigen3/Eigen/src/Core/util/ConfigureVectorization.h:40:38: warning: attribute ignored in declaration of ‘struct PointXYZRGBI’ [-Wattributes] 40 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n) | ^~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/deps/eigen3/Eigen/src/Core/util/ConfigureVectorization.h:40:38: note: in definition of macro ‘EIGEN_ALIGN_TO_BOUNDARY’ 40 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n) | ^~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h:96:3: note: in expansion of macro ‘EIGEN_ALIGN16’ 96 | } EIGEN_ALIGN16; | ^~~~~~~~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/deps/eigen3/Eigen/src/Core/util/ConfigureVectorization.h:40:38: note: attribute for ‘struct PointXYZRGBI’ must follow the ‘struct’ keyword 40 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n) | ^~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/../../../AirLib/deps/eigen3/Eigen/src/Core/util/ConfigureVectorization.h:40:38: note: in definition of macro ‘EIGEN_ALIGN_TO_BOUNDARY’ 40 | #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n) | ^~~~~~~ /home/lxng/Cosys-AirSim/ros2/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h:96:3: note: in expansion of macro ‘EIGEN_ALIGN16’ 96 | } EIGEN_ALIGN16; | ^~~~~~~~~~~~~ --- Finished <<< airsim_ros_pkgs [1min 1s] Summary: 2 packages finished [1min 8s] 1 package had stderr output: airsim_ros_pkgs lxng@lxng-MS-7D31:~/Cosys-AirSim/ros2$
最新发布
11-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值