【点滴记录】E0144 "const char *" 类型的值不能用于初始化 "char *" 类型的实体
今天学习C++的时候按照课本上的例子写了一个引用方式的字符串的交换,但是在VS2019里面编译报错了。
查询了CSDN后,发现是VS2019觉得char*这种方式会导致程序崩溃,就默认禁用了。
如果还想让代码原封不动的跑起来的话,需要这样做:
(千万不要自作聪明在前面加上const定义成字符串常量,那样就会保存为只读的方式,没办法交换了!)
右键你的Project,选择最下面的属性。
在配置属性 --> C/C++ --> 语言里面
将符合模式改为否(/permissive)即可,如下图所示。
这样代码不用修改也就能正常运行了。
源代码如下:
# 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++错误:“const char *“ 类型的值不能用于初始化 “char *“ 类型的实体_ISP行业的忠实粉丝-CSDN博客
本文作者:赵苦瓜
文章标题: 【点滴记录】E0144 "const char *" 类型的值不能用于初始化 "char *" 类型的实体
本文地址:https://blog.jixiaob.cn/?post=73
版权声明:若无注明,本文皆为“赵苦瓜のBlog~”原创,转载请保留文章出处。
本文地址:https://blog.jixiaob.cn/?post=73
版权声明:若无注明,本文皆为“赵苦瓜のBlog~”原创,转载请保留文章出处。
相关文章
fire_cancer2022-03-13 13:05
void main 还能用?!
回复
赵苦瓜(https://blog.jixiaob.cn/)2022-03-14 18:24
@fire_cancer:emmm课本上那样写的我也就跟着写了
回复
QingJiang(https://nathanli.tech)2021-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
Reference: https://stackoverflow.com/questions/20944784/why-is-conversion-from-string-constant-to-char-valid-in-c-but-invalid-in-c