Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio Visual Studio';s';格式文件';不';无法识别每个宏的Q__Visual Studio_Qt_Visual Studio 2017_Code Formatting - Fatal编程技术网

Visual studio Visual Studio';s';格式文件';不';无法识别每个宏的Q_

Visual studio Visual Studio';s';格式文件';不';无法识别每个宏的Q_,visual-studio,qt,visual-studio-2017,code-formatting,Visual Studio,Qt,Visual Studio 2017,Code Formatting,我注意到Qt的宏与Visual Studio的某些功能不兼容: IntelliSense将其检测为函数声明:每个Q_FOREACH在类查看器中显示为函数/方法。幸运的是解决了这个问题 代码格式化还将其检测为函数声明(编辑>高级>格式化文档)。例如,对于我当前的格式样式: void foo() { Q_FOREACH (auto action, actions){ (action); } for (int i = 0; i < 10; ++i) { (i); } } void foo(){

我注意到Qt的宏与Visual Studio的某些功能不兼容:

  • IntelliSense将其检测为函数声明:每个
    Q_FOREACH
    在类查看器中显示为函数/方法。幸运的是解决了这个问题

  • 代码格式化还将其检测为函数声明(编辑>高级>格式化文档)。例如,对于我当前的格式样式:

    void foo() {
    Q_FOREACH (auto action, actions){ (action);
    }
    for (int i = 0; i < 10; ++i) { (i);
    }
    }
    
    void foo(){
    Q_FOREACH(自动动作,动作){(动作);
    }
    对于(int i=0;i<10;++i){(i);
    }
    }
    
    格式为

    void foo()
    {
      Q_FOREACH(auto action, actions)
      {
        (action);
      }
      for (int i = 0; i < 10; ++i) {
        (i);
      }
    }
    
    void foo()
    {
    Q_FOREACH(自动操作,操作)
    {
    (行动);
    }
    对于(int i=0;i<10;++i){
    (i) );
    }
    }
    
    而不是

    void foo()
    {
      Q_FOREACH (auto action, actions) {
        (action);
      }
      for (int i = 0; i < 10; ++i) {
        (i);
      }
    }
    
    void foo()
    {
    Q_FOREACH(自动操作,操作){
    (行动);
    }
    对于(int i=0;i<10;++i){
    (i) );
    }
    }
    
  • 有没有办法解决这个问题?用于解决与IntelliSense相关的第一个问题的cpp.hint提示已经应用,对格式没有帮助

    注:我正在与Visual Studio Professional 2017合作,并在2017年使用Visual Studio附加模块2.1.1(beta 10.03.2017,下载自)


    更新:为了提供一些额外的上下文,我们刚刚开始从VS 2010迁移到VS 2017。目前我们只迁移IDE,工具集仍然在2010,其中自然替换,C++ 11范围,对于C++编译器的版本是不可用的。 据了解,团队中的一些成员一直在使用(和)进行代码格式化,这或多或少可以接受地处理这种情况(以及其他与Qt相关的事情)。我开始研究迁移到本机代码格式化程序的可能性,并发现了这一点,这就是我提出这个问题的原因


    尚未解决我的问题的相关问题:


    • 是的。解决方法很简单:不要使用该宏。没必要。改为使用范围。你想写:

      void foo()
      {
        for (auto action : actions)
          action->doSomething();
      }
      

      是的,我知道,我也想,但是,对不起,我忘了提到我们正在从2010年迁移到2017年,目前工具集定位在2010年(其中的C++11范围不可用)。我正在更新问题以指出这一点。谢谢你的回复!