关于Symbian的"crosses initialization of XXX"错误

深入解析C++编译错误:crosses initialization的根源与解决方案 在C++编程中,编译错误是开发者常遇到的问题,其中crosses initialization错误揭示了语言对确定性与安全性的核心追求。这一错误的原理源于C++标准对对象生命周期与执行流程的严格规定:对象的生命周期从其定义点开始,初始化是不可或缺的环节。当程序的控制流(如goto语句或switch case)可能跳过变量的初始化,却又在后续试图使用时,编译器在编译期进行数据流与控制流分析,发现潜在的未初始化风险,从而强制报错。这种机制体现了编译期的安全保障,防止未定义行为引发的程序崩溃或安全漏洞。在工程实践 阅读详情

   

          昨天,同事在把前一阶段的项目编译、打包成sis安装文件时,遇到如下的编译错误 :

crosses initialization of XXX

          同事向我请教,我仔细看了一下他的代码,并没有什么问题。这个错误提示很少见,于是Google了一下,找到如下一篇论坛上的资料:

Problem: You get an error of this form, while compiling some nice program from source:

Code:

error: jump to case label
error:   crosses initialization of `bool pushed'



The offending code contains a switch statement and a declaration of some variable or object inside one of its cases:

Code:

      case HD_ELEMENT_UL :
          bool pushed = t->style->margin[HD_POS_LEFT] != 0.0 ||
                        t->style->margin[HD_POS_RIGHT] != 0.0;

          if (pushed)
            margins->push(margins->left() + t->style->margin[HD_POS_LEFT],
                          margins->right() - t->style->margin[HD_POS_RIGHT],
                          margins->bottom(), 0);

          parse_contents(t->child, margins, y, page, heading, chap);

          if (pushed)
            margins->pop();
          break;


Idea Reason: The problem is that there is a declaration of an object (the boolean "pushed") without scope. Thus, the scope of the object could traverse the break statement and apply to the next case. Consider this - what is the scope of obj1 in the code below? It starts at the first label, and goes until the end of the case block. So it's in scope at CHOICE_B. But its constructor wasn't called....

Code:

  switch (choice) {
  case CHOICE_A:
    someclass obj1(&commonobj);

    break;
  case CHOICE_B:
    someotherclass obj2(&commonobj);

    break;
  default:
    break;
  }
}


Thus, you should use curly brackets to delimit scope, as in:

Code:

switch (choice) {
  case A: {
    someobj x;
    ...
  }
  break;
  case B: {
    ...
  }
  break;
  ...
}


Arrow Solution: Change the case statement to:

Code:

      case HD_ELEMENT_UL :
          {
          bool pushed = t->style->margin[HD_POS_LEFT] != 0.0 ||
                        t->style->margin[HD_POS_RIGHT] != 0.0;

          if (pushed)
            margins->push(margins->left() + t->style->margin[HD_POS_LEFT],
                          margins->right() - t->style->margin[HD_POS_RIGHT],
                          margins->bottom(), 0);
 
          parse_contents(t->child, margins, y, page, heading, chap);
   
          if (pushed)
            margins->pop();
          }
          break;



i.e. add curly brackets to delimit the scope of "pushed" inside the switch.

Exclamation References:

Bug#180937: g++ internal compiler error: Error reporting routines re-entered

Bug#180937: g++ internal compiler error: Error reporting routines re-entered
_________________
Regards

Chris Karakas
www.karakas-online.de

 

======================================================

注: 该资料的网址为:http://www.karakas-online.de/forum/viewtopic.php?t=4194

 

        原来如此!问题出在case语句内定义的变量的作用域上面。只要把每个case语句用括号(" {} ")括起来,变量的作用域限定在相应case语句之内,就不会出现交叉初始化(crosses initialization )的错误,问题随之解决。

       附:上面论坛资料的pdf格式文件的下载(我的box中的资源,版权归原论坛所有):

     

下载地址http://www.box.net/shared/ptpqtymqvz

 

Surface Pro 4/5/6/7保姆级黑苹果安装:从Windows分区到OC引导配置全流程(含EFI文件替换避坑) 本文详细介绍了在Surface Pro 4/5/6/7上安装黑苹果的全流程,包括Windows分区、OC引导配置和EFI文件替换等关键步骤。通过实战经验分享,帮助用户避开常见陷阱,实现Windows与macOS双系统完美共存,特别适合对黑苹果安装感兴趣的Surface Pro用户。 阅读详情

相关推荐

突发E层(Es层):短波通信中的“意外惊喜”与“隐形杀手”全解析

本文深入解析了突发E层(Es层)在短波通信中的双重作用,既可能带来超远距离通信的“意外惊喜”,也可能成为通信链路的“隐形杀手”。通过分析Es层的形成机制、时空分布规律及实战应用技巧,帮助通信爱好者与专业人员更好地利用或应对这一电离层现象,提升短波通信的可靠性与效率。

weixin_30443813的博客 822

解决”crosses initialization of....”问题

在switch-case中定义变量,编译时出现异常:crosses initialization of......,异常代码如下: switch(Type) { case 1: int a; break; case 2: int b; break; default: break; } 出现异常的原因是c/c++中变量的生命周期的问题,在case 1中定义了变量a,在case2也能使用,但如果在程序运行中直接跳入case2分支就会出现没有初始化的异常。程序编译时为了防止出

zhoumuyu_yu的博客 1万+

Frida精准定位Shopee x-sap-ri动态签名生成函数

x-sap-ri是Shopee客户端生成的上下文感知型动态令牌,本质为基于设备标识、请求路径与毫秒级时间戳三元组的SHA256哈希值,经Base64编码后作为防重放与防批量伪造的核心校验字段。其生成逻辑深度混淆且跨Java/Native层,静态分析失效,而Frida凭借内存级函数调用拦截与JNI层穿透能力,成为唯一可行的技术路径。本文聚焦Frida在加固App中的实战适配——通过libcrypto.so API特征扫描反向定位被抹名的生成函数,实现对x-sap-ri输入参数(如16字节device_id加密

weixin_33978578的博客 609

c++ error:crosses initialization of 问题解决

`crosses initialization of` 翻译过来就是 `跳过了初始化`,根本原因是变量在其作用范围内,存在不被初始化的风险,解决思路有两个:一是明确限定变量的作用域;而是将初始化提前,避免不被初始化的发生。

hejnhong的博客 2379

别再到处找模型了!手把手教你用Xinference+Docker部署本地私有大模型(Llama2/Qwen实战)

本文详细介绍了如何使用Xinference和Docker部署本地私有化大模型(如Llama2/Qwen),涵盖硬件配置、模型管理、Docker部署及性能优化等关键步骤。通过实战案例,帮助开发者快速构建企业级AI推理服务,确保数据安全与高效运行。

weixin_28683065的博客 231

Linux系统搭建OpenClaw(原Clawdbot)全流程指南 最新版

工具定位:开源个人 AI 助手,支持文件读取、命令执行、多渠道交互(Telegram / 本地终端等);系统要求:主流 Linux 发行版(Ubuntu/Debian/CentOS 等),Node.js ≥22(核心依赖);安全提示:OpenClaw 为测试版,具备高权限操作能力,建议使用非主力机,配置权限白名单,避免接触敏感数据。

AI时代老码农的第二春 6559

两次碰到编译错误: crosses initialization of...

解决办法是在case语句中不要定义变量,在switch之前定义。1. switch的case中有定义变量。在跳转之前进行变量定义,注意goto语句位置。2. goto跳过了变量的定义。

生活需要深度 1772

Trae+雪球MCP,化身专业的股票分析师(玩转100个MCP系列第二弹)

大家好呀,我是程序员夏叶,深度AI编程使用者,专注于分享AI编程方面的使用技巧、经验以及前沿资讯,有兴趣的可以关注我的公众号,一起学习,共同进步。第二弹,使用Trae+雪球MCP,获取股票实时行情,分析股票走向等,写代码间隙看看股票价格,研究研究行情,哈哈。真的很不错呀,最关键的是,足够隐蔽,同事以为你在写代码,实际你在浏览股票行情,哈哈,感兴趣的可以试一下哦。说实话,沧州明珠这只股我算是砸手里了,不过还好买的不多,哈哈。

cpp加油站的专栏 517

关于”crosses initialization of....”问题

crosses initialization of...

m0_71135072的博客 431

MATLAB - 浮动基座机器人的逆运动学

本例演示如何解决以浮动底座为模型的机器人的逆运动学问题。浮动底座机器人可以在空间中自由平移和旋转,具有六个自由度。浮动基座机器人的逆运动学问题适用于空间应用,即使用安装在浮动和致动基座上的机械臂在空间操纵物体,也适用于躯干和腿部可在空间自由移动的行走机器人。请注意,刚体树对象表示具有固定基体的刚体树。这意味着刚体树的基体在世界中具有固定的位置和方向。您可以在基体上附加一个 “浮动 ”类型的刚体关节,为具有浮动基体的机器人建模,以用于动态模拟等某些应用。

机器人控制与仿真应用 2438

Unreal5从入门到精通之初学者碰到解决不了的问题怎么办?

在学习Unreal的过程中,你曾陷入困境了吗?对于我来说,这种情况发生得比我愿意承认的要多得多。幸运的是,除了一般地在网上搜索之外,还有很多地方可以获得虚幻引擎的帮助。

TxNet 977

C/C++报错:error: crosses initialization of *

C/C++报错:error: crosses initialization of *

大道之行,始于足下 687

ML.NET在工业上位机中的深度应用:如何用C#实现10ms级预测推理?

模型要“够用就好”:工业场景的规律往往不复杂,别迷信深度学习,FastTree、线性模型足够应付80%的场景,且速度快3-5倍;预处理“能省就省”:离线做90%的特征工程,实时只处理动态变化的10%,这是突破10ms的关键;代码“贴近硬件”:用struct、数组池、SIMD等“非托管技巧”写C#,避免GC成为实时性瓶颈;测试“模拟极端”:在目标工控机上用100%负载(同时跑PLC通信、运动控制、视觉检测)测试推理延迟,确保极端情况下仍达标。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 741

error:crosses initialization of ...的解决办法

switch(c) {       case 0x01:       int temp = a + b;       ....       break;       case 0x02:       break;       default:break; } 此时会报如题所示错误 原因是因为C和C++中,一个变量的生命期(作用域)是

zzwdkxx的专栏 5万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

编译错误: crosses initialization of...

为什么80%的码农都做不了架构师?>>> ...

weixin_34342992的博客 514

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

c++ error:crosses initialization of errror:jump to case label [-fpermissive]

如果在case1中声明并且对其进行初始化。而运行时直接跳入case2就会导致变量不能初始化,从而导致程序运行期间的问题。编译器为了防止这个问题就会出错提示。switch语句中没有单独的区域块限制变量的生命周期,因此变量生命周期是从声明到switch结束。因此在case1中声明的变量在case2中也可以使用。解决办法是将变量的定义放在switch语句之前。或者使用大括号限定变量的生命周期。

m0_60352504的博客 797

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

switch里面报crosses-initialization

如下写法会报错crosses initialization of ‘int r’

chadm.xiang 367

VC INTERNAL COMPILER ERROR 错误的常见解决方式

碰到过两次 INTERNAL COMPILER ERROR 错误,经过检查工程后,确认原因是工程中重复包含文件。例如在一个WorkSpace中包含两个Project A B,在A 中包含 x.cpp y.cpp z.cpp 在 B 中包含 m.cpp n.cpp,并且x.cpp与 m.cpp 含有同名函数,之后将x.cpp 加入 B 中, 从而编译错误,因为同名文件。   fatal

AK47_SA5000的专栏 2534

internal compiler error

linux 下编译时出现internal compiler error: Killed (program cc1plus),大致原因是gcc在编译的时候会大量使用内存,内存不足导致编译错误,解决方法就是加一个交换分区。 1. 创建分区文件 //创建一个1M x 1024 = 1G 的文件 sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 2. 将上个文件生成Swap 文件 sudo mkswap /swapfile 3. 激活swap文件

lifei_0001的博客 3125

解决“g++:internal compiler error“问题

    在VMware Workstation v15里安装Ubuntu 16.4,然后在Ubuntu里编译Bitcoin v0.14.1,发现弹出"g++:internal compiler error"错误,如图(1)所示: 图(1)     出现该问题的原因是,编译Bitcoin需要比较大的内存空间,至少1GB=1024MB, 考虑到图形界面软件、网络驱动等也需要内存,所以把虚拟机调内存调大到2GB=2048MB ,重新编译Bitcoin,顺利通过,不再报错。     在VMware Wor

sanqima的专栏 2975

crosses initialization of “XXX”

crosses initialization of “XXX” goto crosses initialization of “xxx” it     分类: 编程 这个问题是由于goto引起的;goto是已经名为不提倡的语句,但是有时它还是很有用的。 代码

beyondlpf的专栏 8742

C++ 错误解决 —— internal compiler error

问题: g++ 编译时,报错: g++: internal compiler error: Killed (program cc1plus) 出错原因: 出错的原因是(虚拟机)运行内存不足,而大量template的扩展需要足够的内存。 解决: 方法1: 若是在虚拟机上,关掉虚拟机,可直接调节虚拟机内存大小,然后重新启动即可。 方法2: 可以通过临时使用交换分区来解决: ...

weixin_30451709的博客 2596

error: crosses initialization of ‘std::string xx变量‘

好久没写博客了,今儿就来水一篇hhh 学C++之前不是要先复习下C嘛,然后就从网上随便找了个项目敲一敲 我就不放源码了,大家应该都懂的,很简单的那种项目hhh case 4: cout << "请输入查找的名字" << endl; string new_name; cin >> new_name; break;

先说一下,就简单地写点儿氵文,不是博客,只是我的笔记本/工具书 1101

C/C++编程语言中“crosses initialization”编译错误

本文主要介绍在C/C++编程语言的代码编译过程中出现的“crosses initialization”编译错误的相关内容,同时给出相应的解决方法。

liitdar的博客 4710

YouTube-8M: A Large-Scale Video Classification Benchmark

Abstract Many recent advancements in Computer Vision are attributed to large datasets. Open-source software packages for Machine Learning and inexpensive commodity hardware have reduced the barrier

人工智能 127万+

解决问题crosses initialization of char

如题所述: 原因如下展示: uchar AppStru_[4]={0,0,1,0}; //index count status char *DataAddr ; switch(type) { case C2ABlockingZone: UAP = 0xFe ; AppStru_[0]= 0x07 ; AppStru_[1]= 0xD1 ; char LATLON

固本培元的专栏 3777
上一篇: 时间条控件制作简明教程
下一篇: symbian下的数据库DBMS错误码
WaveDHW
博客等级 码龄20年 455粉丝 159原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值