C++Click macroc



  • I'm trying to glue that macro:

    #define fileNameCut ((std::string(__FILE__).erase(0, std::string(__FILE__).rfind("\\") + 1)).c_str())
    #define msg_s ("Error\nin file: " fileNameCut )
    #define msg_b (fileNameCut)
    

    Challenge:

    int main(){
    //msg_b//Замечательно работает и обрезает путь до файла как нужно!
    printf("%s", msg_s);
    return 0;
    }
    

    Compilation:

    Ошибка  C2059   синтаксическая ошибка: строка   v 1.0   source.cpр  
    Ошибка  C2064   результатом вычисления фрагмента не является функция, принимающая 1 аргументов
    

    How do I fix it?



  • The macro rotation will work.

    "Error\nin file: " ((std::string(__FILE__).erase(...)).c_str())
    

    First, erase He's returning the terator, not the line, and that's why you can't call it. c_str
    Second, "..." str.c_str() - it's not a code. You can glue two literatures."a" "b"but not a literal line.

    Also std::string(__FILE__).rfind("\\") - it's a platform-dependent code, the surveillance can be any.


Log in to reply
 


Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2