[问题] 型别转换问题

楼主: goodzey (--)   2017-09-04 17:32:01
小弟最近想把一个Visual Studio 2005小专案加入一个Visual Studio 2008大专案中,遇
到型别转换问题:
在VS2008大专案中
const char* XXX(void *A, const char *B, const char *C, const char *D){...}
在VS2005小专案中
char* YYY= XXX(E, F, G, H);
结果出现编译错误:
错误402 error C2440: '正在初始化' : 无法由 'const char *' 转换为 'char *'
我试过一个方法:
在VS2005小专案中改成
char* YYY= (char*)XXX((void *)E, (const char *)F, (const char *)G, (const
char *)H);
结果编译会过,但是程式执行.exe到这部分功能时还是会自动关掉
请问大家该怎么解决?
谢谢!!
作者: stucode   2017-09-04 18:14:00
我猜你后面还有程式码尝试修改YYY指向的内容 这样当然炸没有的话用const char*去接XXX的回传值就好了
作者: Lipraxde (Lipraxde)   2017-09-04 18:20:00
一定要改的话就用strcpy复制一份出来改
作者: tinlans ( )   2017-09-05 11:56:00
乱改 const 会死不意外,检讨一下
作者: Killercat (杀人猫™)   2017-09-05 14:48:00
YYY用const char*接有什么困难吗 = =要用值的话再strcpy_n一份出来不就好了编译器明明都讲那么清楚了 XD
作者: Lipraxde (Lipraxde)   2017-09-05 14:51:00
一开始不熟悉的人就是会用怪怪的方式debug啊,强制转型估计是上网找到的方法
作者: Killercat (杀人猫™)   2017-09-05 16:14:00
不过以前的VS居然能过而且没runtime炸掉真是神蹟....
楼主: goodzey (--)   2017-09-05 20:48:00
哈哈!的确是不熟悉才用这方法原专案多数人用LINUX上开发,少数用VS,所以一堆问题

Links booklink

Contact Us: admin [ a t ] ucptt.com