vs2015工程向vs2019工程遷移碰到的各種問題

把一個C++工程,從vs2015工程向vs2019工程遷移的過程中,碰到了好多問題,記錄如下:


1.   ConfigINI.cpp(85,55): error C2664: “std::string &trim(std::string &)”: 無法將參數 1 
    從“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”轉換爲“std::string &”
    ConfigINI.cpp(85,45): message : 非常量引用只能綁定到左值
    ConfigINI.cpp(24,9): message : 參見“trim”的聲明
    解決辦法是增加一個強制類型轉換:entry.name = trim((string&)str.substr(0,fIndex));
    
2.  還有一些過期的func要使用,編譯選項中增加:/D _CRT_SECURE_NO_WARNINGS。
  
3.  error C3861: “access”: 找不到標識符。access函數在windows中是_access()
  替換一下就好。
  
4.    下面這種打印的表達方式也不被允許了:
    #if 1
    #define     VosPrint(fmt,args...)  do{ \
                char _PrtBuf[1000]; \
                sprintf(_PrtBuf,":" fmt , ## args); \
                Log_MsgLine("vos.log",_PrtBuf); \
                }while(0)
    #else
    #define     VosPrint(fmt,args...)  
    #endif
    重新找一個logger模塊,新建過濾器,包括logger子模塊源代碼進來。
   5. 此外sprintf要改爲snprintf。strcpy要改爲strcpy_s。
    改動還是比較多,感覺就是ISO的c++ 14標準變得更嚴格了,這也是好事,避免可能的出錯。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章