>  Q&A  >  본문

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 为什么会报错?

伊谢尔伦伊谢尔伦2765일 전594

모든 응답(3)나는 대답할 것이다

  • 天蓬老师

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

    NEWAPPPATH.substr NEWAPPPATH为char[]数组,不支持.操作; 可以修改为NEWAPPPATH string("C:\QQ\QQ.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:\QQ\QQ.exe")
    #define VALOPEN NEWAPPPATH.substr(0,NEWAPPPATH.findlast_of('\'))
    这样能让编译器勉强执行过去

    회신하다
    0
  • 취소회신하다