几个月之前,接触Android recovery源代码的时候,看ScreenRecoveryUI类的时候,那时候C++基础还不是特别好,一直不明白以下的
初始化
方式:
下面这个是Recovery的一个构造函数,代码位于:screen_ui.cpp,它的类的实现在screen_ui.h。
如下这个ScreenRecoveryUI类,这个类是继承于RecoveryUI类的:
这个文件在screen_ui.h
class ScreenRecoveryUI : public RecoveryUI {
public:
ScreenRecoveryUI();
void Init();
C++新标准不再允许将常量字符串,作为字符指针使用。对此,msvc编译环境,会报错。对此,可以在工程属性中配置“多字节字符集”来
解决
这个问题。目前,使用QtCreator,同样也可以在Qt工程文件中去配置“多字节字符集”在Qt工程文件pro文件中,去掉。至此,完美
解决
该问题。
3、
char
*变const
char
*容易,const
char
*变
char
*麻烦。//
char
[]类型转const
char
* 类型。//const
char
*类型转
char
[]类型。//const
char
*类型转
char
*类型。
项目属性->C/C+±>语言->符合模式选项的含义
/permissive-:启用所有严格标准符合性编译器选项,并禁用大部分特定于 Microsoft 的编译器扩展(但有一些例外,比如 __declspec(dllimport))。 在 VS2019 版中此选项默认为开启状态。 /permissive- 符合性模式包括对两阶段名称
有一些C++程序在VS2017上运行会有一些错误,而在vc6.0中却能运行出来。接下来的一个程序就是我在vs2017上运行出现错误,而在vc6.0上运行出来。但我已经通过分析vs2017上错误来源
解决
了该问题,并以此作为分享。这样就能在vs2017成功运行出来了。在vs2017运行会显示。
Qt配置多字节字符集,
解决
“
无法
从const
char
[]
转换
为
char
*”的问题
1.问题描述
手上有一个项目,开发环境为Qt5.9.9+vs2015,由于种种原因,使用QtCreator作为IDE进行项目的开发工作。
项目中有一个版本比较旧的第三方库,没有源码,提供的头文件中充斥着下面这种用法:
void func(
char
*str = "xxxx"); // 第三方库头文件中太多
char
*str = "xxxx"这样的用法却又没办法修改
问题就出在
char
*str = "xxxx"这里,C+
C++错误提示:
无法
将参数 1 从“const
char
[7]”
转换
为“
char
*” 或“const
char
*”类型的值不能用于
初始化
“
char
*”类型的实体
用VS2017或VS2019写C++代码时,发生以下两个错误之一时,均可按以下两个方法
解决
:
onst
char
* pc_
char
= 0;
char
*cP = pc_
char
;
//////////////////////////////////////////////////
const
char
* pc_
char
= 0;
char
*cP = const_cast(pc_
char
); //提示你错误的指针,但是可以编译通过
const_cast //将c