2000行来自Eigen的警告消息

huangapple go评论59阅读模式
英文:

2000 lines of warnings from Eigen

问题

你可以通过添加编译器选项 -Wno-ignored-attributes 来禁用这些警告,而不需要更改编译器命令。这将告诉编译器不要产生关于忽略属性的警告信息。

例如,你可以将以下选项添加到你的编译器命令中:

g++ -std=gnu++17 -I"/usr/include/R" -DNDEBUG -I"/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/Rcpp/include" -I"/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include" -I"/code/cpp/tests" -I/usr/local/include -fpic -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -c testLBFGSandPlainGD.cpp -o testLBFGSandPlainGD.o -Wno-ignored-attributes

这将禁用与忽略属性相关的警告,而不会影响编译后的执行。

英文:

I am using g++ 8.5.0 and Eigen library v-3.3.9. When building an application that utilizes Eigen, the compiler generates about 2000 lines of warnings . Below only shows a tiny fraction of them.

g++ -std=gnu++17 -I"/usr/include/R" -DNDEBUG   -I"/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/Rcpp/include" -I"/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include" -I"/code/cpp/tests" -I/usr/local/include   -fpic  -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection  -c testLBFGSandPlainGD.cpp -o testLBFGSandPlainGD.o
g++ -std=gnu++17 -shared -L/usr/lib64/R/lib -Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -o sourceCpp_22.so testLBFGSandPlainGD.o -L/usr/lib64/R/lib -lRIn file included from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/Core:397,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/Dense:1,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/RcppEigenForward.h:30,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/RcppEigen.h:25,
from testLBFGSandPlainGD.cpp:2:
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:60:39: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
template<> struct is_arithmetic<__m128>  { enum { value = true }; };
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:61:40: warning: ignoring attributes on template argument ‘__m128i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
template<> struct is_arithmetic<__m128i> { enum { value = true }; };
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:62:40: warning: ignoring attributes on template argument ‘__m128d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
template<> struct is_arithmetic<__m128d> { enum { value = true }; };
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:161:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f’ {aka ‘__vector(4) float’} [-Wignored-attributes]
template<> struct unpacket_traits<Packet4f> { typedef float  type; enum {size=4, alignment=Aligned16}; typedef Packet4f half; };
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:162:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
template<> struct unpacket_traits<Packet2d> { typedef double type; enum {size=2, alignment=Aligned16}; typedef Packet2d half; };
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:163:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
template<> struct unpacket_traits<Packet4i> { typedef int    type; enum {size=4, alignment=Aligned16}; typedef Packet4i half; };
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:718:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f’ {aka ‘__vector(4) float’} [-Wignored-attributes]
struct palign_impl<Offset,Packet4f>
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:741:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
struct palign_impl<Offset,Packet4i>
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:764:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
struct palign_impl<Offset,Packet2d>
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:778:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f’ {aka ‘__vector(4) float’} [-Wignored-attributes]
ptranspose(PacketBlock<Packet4f,4>& kernel) {
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:783:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
ptranspose(PacketBlock<Packet2d,2>& kernel) {
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:790:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
ptranspose(PacketBlock<Packet4i,4>& kernel) {
^
In file included from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/Core:377,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/Dense:1,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/RcppEigenForward.h:30,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/RcppEigen.h:25,
from testLBFGSandPlainGD.cpp:2:
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/Default/ConjHelper.h:15:70: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f’ {aka ‘__vector(4) float’} [-Wignored-attributes]
template<> struct conj_helper<PACKET_REAL, PACKET_CPLX, false,false> {                                          \
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/Complex.h:232:1: note: in expansion of macro ‘EIGEN_MAKE_CONJ_HELPER_CPLX_REAL’
EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet2cf,Packet4f)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/Default/ConjHelper.h:22:70: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f’ {aka ‘__vector(4) float’} [-Wignored-attributes]
template<> struct conj_helper<PACKET_CPLX, PACKET_REAL, false,false> {                                          \
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/Complex.h:232:1: note: in expansion of macro ‘EIGEN_MAKE_CONJ_HELPER_CPLX_REAL’
EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet2cf,Packet4f)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/Default/ConjHelper.h:15:70: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
template<> struct conj_helper<PACKET_REAL, PACKET_CPLX, false,false> {                                          \
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/Complex.h:417:1: note: in expansion of macro ‘EIGEN_MAKE_CONJ_HELPER_CPLX_REAL’
EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet1cd,Packet2d)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/Default/ConjHelper.h:22:70: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
template<> struct conj_helper<PACKET_CPLX, PACKET_REAL, false,false> {                                          \
^
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/arch/SSE/Complex.h:417:1: note: in expansion of macro ‘EIGEN_MAKE_CONJ_HELPER_CPLX_REAL’
EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet1cd,Packet2d)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/Core:370,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/Dense:1,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/RcppEigenForward.h:30,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/RcppEigen.h:25,
from testLBFGSandPlainGD.cpp:2:
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/util/XprHelper.h: In instantiation of ‘struct Eigen::internal::find_best_packet<float, 4>’:
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/Matrix.h:22:57:   required from ‘struct Eigen::internal::traits<Eigen::Matrix<float, 4, 1> >’
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Geometry/Quaternion.h:242:7:   required from ‘struct Eigen::internal::traits<Eigen::Quaternion<float> >’
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Geometry/arch/Geometry_SSE.h:24:46:   required from here
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:187:44: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type’ {aka ‘__vector(4) float’} [-Wignored-attributes]
bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:187:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type’ {aka ‘__vector(4) float’} [-Wignored-attributes]
bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:187:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type’ {aka ‘__vector(4) float’} [-Wignored-attributes]
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:187:83: warning: ignoring attributes on template argument ‘Eigen::internal::unpacket_traits<__vector(4) float>::half’ {aka ‘__vector(4) float’} [-Wignored-attributes]
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:205:88: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type’ {aka ‘__vector(4) float’} [-Wignored-attributes]
typedef typename find_best_packet_helper<Size,typename packet_traits<T>::type>::type type;
^~~~
In file included from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/Core:439,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/Dense:1,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/RcppEigenForward.h:30,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/RcppEigen.h:25,
from testLBFGSandPlainGD.cpp:2:
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 1>, 0>’:
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:300:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 1>, 1>’
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:551:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 1>, 3>’
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/DenseBase.h:41:34:   required from ‘class Eigen::DenseBase<Eigen::Matrix<float, 4, 1> >’
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/MatrixBase.h:48:34:   required from ‘class Eigen::MatrixBase<Eigen::Matrix<float, 4, 1> >’
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/PlainObjectBase.h:98:7:   required from ‘class Eigen::PlainObjectBase<Eigen::Matrix<float, 4, 1> >’
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/Matrix.h:178:7:   required from ‘class Eigen::Matrix<float, 4, 1>’
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Geometry/Quaternion.h:46:50:   required from ‘class Eigen::QuaternionBase<Eigen::Quaternion<float> >’
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Geometry/Quaternion.h:250:7:   required from ‘class Eigen::Quaternion<float>’
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Geometry/arch/Geometry_SSE.h:27:3:   required from here
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:55:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type’ {aka ‘__vector(4) float’} [-Wignored-attributes]
>::type PacketReturnType;
^~~~~~~~~~~~~~~~
In file included from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/Core:370,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/Dense:1,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/RcppEigenForward.h:30,
from /home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/RcppEigen.h:25,
from testLBFGSandPlainGD.cpp:2:
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/util/XprHelper.h: In instantiation of ‘struct Eigen::internal::find_best_packet<double, 4>’:
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/Matrix.h:22:57:   required from ‘struct Eigen::internal::traits<Eigen::Matrix<double, 4, 1> >’
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Geometry/Quaternion.h:242:7:   required from ‘struct Eigen::internal::traits<Eigen::Quaternion<double> >’
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Geometry/arch/Geometry_SSE.h:88:47:   required from here
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:187:44: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:187:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:187:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:187:83: warning: ignoring attributes on template argument ‘Eigen::internal::unpacket_traits<__vector(2) double>::half’ {aka ‘__vector(2) double’} [-Wignored-attributes]
/home/xxxxx/R/x86_64-redhat-linux-gnu-library/4.2/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:205:88: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
typedef typename find_best_packet_helper<Size,typename packet_traits<T>::type>::type type;

These warnings do not affect the execution at all.

How can I disable these warnings preferably without changing the compiler commands?

Thank you!

答案1

得分: 3

以下是翻译好的部分:

Eigen使用的相当特殊的优化,以及它作为纯模板库的性质,再加上对多种编译器的支持,意味着它的代码默认情况下会产生大量的编译器警告。为了防止这种情况,它包含一个头文件src/Core/util/DisableStupidWarnings.h,其中包含了专门用于取消这些警告的编译器特定的pragma

出于某种原因,RcppEigen注释掉了这些pragma。如果我正确理解了这个特定的错误报告,这是CRAN存储库政策的要求。

包不应尝试禁用编译器诊断,也不应删除共享对象中的符号等其他诊断信息。

英文:

The rather peculiar optimizations that Eigen uses plus its nature as a pure template library plus support for a wide range of compilers means that its code would, by default, emit a ton of compiler warnings. To prevent this, it contains a header src/Core/util/DisableStupidWarnings.h with compiler-specific pragmas just for the purpose of deactivating these warnings.

For some reason, RcppEigen comments these pragmas out. If I understand this particular bug report correctly, it is a CRAN Repository Policy to do so.

> Packages should not attempt to disable compiler diagnostics, nor to remove other diagnostic information such as symbols in shared objects.

huangapple
  • 本文由 发表于 2023年6月6日 14:14:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/76411874.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定