搜尋

首頁  >  問答  >  主體

c++ define 报错

#include <iostream>
#include <string>
using namespace std;
int main()
{

#define NEW_APP_PATH "C:\\QQ\\QQ.exe";
#define VAL_OPEN NEW_APP_PATH.substr(0,NEW_APP_PATH.find_last_of('\\'));
cout<<VAL_OPEN;
 getchar();
return 0;
}

用define 为什么会报错?

伊谢尔伦伊谢尔伦2805 天前640

全部回覆(3)我來回復

  • 天蓬老师

    天蓬老师2017-04-17 11:09:36

    NEWAPPPATH.substr NEWAPPPATH為char[]數組,不支持.操作; 可以修改為NEWAPPPATH string("C:QQQQ.exe") 試一下。

    回覆
    0
  • PHPz

    PHPz2017-04-17 11:09:36

    因為NEWAPPPATH是一個C字符串,C字符串當然沒有substr方法。

    回覆
    0
  • 黄舟

    黄舟2017-04-17 11:09:36

    整個程序都錯的離譜,而不光是define的問題了
    C 的原生字符串是沒有成員函數的
    宏定義結尾不要分號
    #define NEWAPPPATH std::string("C:QQQQ.exe")
    #define VALOPEN NEWAPPPATH.substr(0,NEWAPPPATH.findlast_of(''))
    這樣能讓編譯器勉強執行過去

    回覆
    0
  • 取消回覆