C++,错误:"const char *"类型的实参与"char *类型的形参不兼容"

C++,错误:"const char *"类型的实参与"char *类型的形参不兼容",第1张

这是说明类型不兼容,强制转类型。在声明变量 char* 时改成 const char *即可。

当用户想在.h声明中定义成员变量,有时会报类型重定义错误,如果不是工程中真的重复定义了多个同名类,那么多半是没有给该类的头文件加条件指示符#ifndef。

条件指示符#ifndef 最主要的目的就是防止头文件的重复包含和编译,这样才能保证头文件被多个其他文件引用时,内部的数据不会被多次定义而造成错误。

扩展资料

C++ 中形参与实参区别:

1、形参出现在函数定义的地方,多个形参之间以逗号分隔,形参规定了一个函数所接受数据的类型和数量。

实参出现在函数调用的地方,实参的数量与类型与形参一样,实参用于初始化形参。

2、当形参是引用类型时,对应的实参被引用传递,引用形参是对应的实参的别名。

当实参的值被拷贝给形参时,形参和实参是两个相互独立的对象,对应的实参被值传递。

3、C++中,建议使用引用类型的形参替代指针,因为使用引用,形式上更简单,无须额外声明指针变量,也避免了拷贝指针的值。如果函数无须改变引用形参的值,最好将其声明为const引用。

1、首先打开IE浏览器单击右上方的设置图标。

2、其次在d出来的菜单中选择兼容性视图设置,点击“添加网址”在文本框里输入想设置兼容的网站,并单击“添加”。

3、最后单击“关闭”即可兼容。

解决方法一:

通常手动输入的字符串都是const char*(即LPCSTR)类型的,因此只需将该句中的MessageBox改为MessageBoxA即可。

解决方法二:

参数使用“_T”宏:

MessageBox(NULL,_T("Open image failed!"),_T("error"),MB_OK)

或是:

MessageBox(NULL, L"Openimage failed!", L"error",MB_OK)

/*

************************************************************************************************************************************************

* 当工程是Unicode编码时,_T将括号内的字符串以Unicode方式保存;当工程是多字节编码时,_T将括号内的字符串以ANSI方式保存

* 关键字“L”,则是不管编码环境是什么,都是将其后面的字符串以Unicode方式保存。

*************************************************************************************************************************************************

*/

1、用THCAR代替char

2、字符串加_T(""),如_T("你好")

3、用_tcscpy等代替strcpy等

ANSI *** 作函数以str开头,如strcpy(),strcat(),strlen();

Unicode *** 作函数以wcs开头,如wcscpy,wcscpy(),wcslen();

ANSI/Unicode互为兼容的 *** 作函数以_tcs开头 _tcscpy(C运行期库);

ANSI/Unicode互为兼容的 *** 作函数以lstr开头 lstrcpy(Windows函数);

考虑ANSI和Unicode的兼容,需要使用以_tcs开头或lstr开头的通用字符串 *** 作函数。

最后加上头文件 #include <tchar.h>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11933183.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存