看板 C_and_CPP 關於我們 聯絡資訊
小弟最近想把一個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到這部分功能時還是會自動關掉 請問大家該怎麼解決? 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.139.203 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1504517523.A.156.html
stucode: 我猜你後面還有程式碼嘗試修改YYY指向的內容 這樣當然炸 09/04 18:14
stucode: 沒有的話用const char*去接XXX的回傳值就好了 09/04 18:14
Lipraxde: 一定要改的話就用strcpy複製一份出來改 09/04 18:20
tinlans: 亂改 const 會死不意外,檢討一下 09/05 11:56
Killercat: YYY用const char*接有什麼困難嗎 = = 09/05 14:48
Killercat: 要用值的話再strcpy_n一份出來不就好了 09/05 14:48
Killercat: 編譯器明明都講那麼清楚了 XD 09/05 14:49
Lipraxde: 一開始不熟悉的人就是會用怪怪的方式debug啊,強制轉型 09/05 14:51
Lipraxde: 估計是上網找到的方法 09/05 14:51
Killercat: 不過以前的VS居然能過而且沒runtime炸掉真是神蹟.... 09/05 16:14
goodzey: 哈哈!的確是不熟悉才用這方法 09/05 20:48
goodzey: 原專案多數人用LINUX上開發,少數用VS,所以一堆問題 09/05 20:52