欢迎食用『主界面』~,这里是赵苦瓜的看板娘desu~
【点滴记录】E0144 "const char *" 类型的值不能用于初始化 "char *" 类型的实体
首页 > 点滴记录    作者:赵苦瓜   2021年10月25日 0:41 星期一   热度:158°   百度已收录  
时间:2021-10-25 0:41   热度:158° 
今天学习C++的时候按照课本上的例子写了一个引用方式的字符串的交换,但是在VS2019里面编译报错了。

源代码如下:

# include <iostream>
using namespace std;

void exchange(char*& char_a, char*& char_b);

void main()
{
	char* ap = "hello";
	char* bp = "how are you?";
	cout << "ap:" << ap << endl
		<< "bp:" << bp << endl;
	exchange(ap, bp);
	cout<<"exchanged!"<<endl
		<< "ap:" << ap << endl
		<< "bp:" << bp << endl;
}


void exchange(char* &char_a, char* &char_b)
{
	char* temp = char_a;
	char_a = char_b;
	char_b = temp;
}
报错是E0144 "const char *" 类型的值不能用于初始化 "char *" 类型的实体 ,是第八行和第九行出现的错误。

查询了CSDN后,发现是VS2019觉得char*这种方式会导致程序崩溃,就默认禁用了。
 如果还想让代码原封不动的跑起来的话,需要这样做:
 (千万不要自作聪明在前面加上const定义成字符串常量,那样就会保存为只读的方式,没办法交换了!)
 右键你的Project,选择最下面的属性。
 在配置属性  -->  C/C++  -->  语言里面
 将符合模式改为否(/permissive)即可,如下图所示。
 C++常量字符串.JPG
这样代码不用修改也就能正常运行了。


参考文章:

C++错误:“const char *“ 类型的值不能用于初始化 “char *“ 类型的实体_ISP行业的忠实粉丝-CSDN博客

本文作者:赵苦瓜      文章标题: 【点滴记录】E0144 "const char *" 类型的值不能用于初始化 "char *" 类型的实体
本文地址:https://blog.jixiaob.cn/?post=73
版权声明:若无注明,本文皆为“赵苦瓜のBlog~”原创,转载请保留文章出处。
QingJiang2021-11-02 16:37
ISO C++ 11标准不允许将字符串常量转换到char *
Reference: https://stackoverflow.com/questions/20944784/why-is-conversion-from-string-constant-to-char-valid-in-c-but-invalid-in-c

返回顶部    首页    后花园  
版权所有:赵苦瓜のBlog~    站长: 赵苦瓜    主题寒光唯美式V2.4.1  程序:emlog   鲁ICP备20030743号-1      sitemap