none
VS2013 C++ 格式化/智能提示 bug RRS feed

  • 问题

  • 我遇到的以下问题已提交反馈,不知道大家是否遇到,如能重现请到反馈那里帮顶一下,谢谢!反馈地址https://connect.microsoft.com/VisualStudio/feedbackdetail/view/983626/vs2013-c-formatting-intellisense-bug


    #define BOOST_NOEXCEPT_OR_NOTHROW throw()
    #define nothrow BOOST_NOEXCEPT_OR_NOTHROW
    #define nothrow1() BOOST_NOEXCEPT_OR_NOTHROW

    template<class T>
    class A
    {
     void Test1_1() nothrow{} //(1.1)
      void Test2_1() {} //(2.1)
     void Test1_2() nothrow{int a = 1; } //(1.2)(3.1)
     void Test2_2() { ; } //(2.2)
     void Test1_3() nothrow
     {
      int a = 1;
     }
      void Test2_3() //(2.3)
     { int a = 1; } //(3.2)
     void Test1_4() nothrow1()
     {
      int a = 1;
     }
     void Test2_4() //(2.4)
     { int a = 1; }
     void Test1_5() nothrow;
     void Test2_5() //(2.5)
     { int a = 1; }
     void Test1_6() nothrow
     {
      int a = 1;
     }
     void Test2_6(); //(2.6)
     /*
     (1.1)~(1.2)选项.文本编辑器.C/C++.格式设置.间距.大括号的间距:
     未选中“在统一初始化和初始值设定项列表的左大括号前插入空格”时,
     输入"nothrow {}"后,会自动格式化为"nothrow{}"
     (2.1)~(2.6)选项.文本编辑器.C/C++.格式设置.缩进:
     选中"在现有代码中,使用圆括号中的新行的对齐设置"时,
     若前一个函数有使用nothrow或其它宏的情况,则(2.1)(2.3)会自动缩进!
     (3.1)~(3.2)选项.文本编辑器.C/C++.格式设置.间距.大括号的间距:
     未选中“在统一初始化和初始值设定项列表中插入空格”时,(3.1)与(3.2)不同!
     若同时选中"分隔符的间距.在分号后面插入空格",则每次Ctrl+K,Ctrl+D/F时(3.1)都会切换格式!
     */
    };

    template<class T>
    class B : public A < T > {}; //(4.1) "A<T>{};" -> "A < T > {};"
    template<class T> using AA = A < T > ;  //(4.2) "A<T>;" -> "A < T > ;"

    #include <vector>
    void Test(int a) { auto numbers = std::vector < int > {1, 2, 3}; } //(4.3) "vector<int>{" -> "vector < int > {"
    /*(4.1)~(4.3)
    VS选项.文本编辑器.C/C++.格式设置.间距.二元运算符:
    选中“前后插入空格”后,模板基类的"<>"前后会自动添加空格!
    VS.ToolsOptionsPages.Text_Editor.C/C++.Formatting.Spacing.binary operator :
    When the "Insert space" radio is selected, auto formatting "xx<T>" to "xx < T > "!
    */

    class C
    {
    protected:
     int a;
     void Test() {}
    };

    class D : public C
    {
    public:
     using C::a;
     using C::Test;
    };

     

    void Test()
    {
     D d;
     d.a; //(5.1)
     d.Test(); //(5.2)
     /*(5.1)~(5.2)

    选项.文本编辑器.C/C++.高级.IntelliSense.MemberListFilterInaccessible设为True时,输入"d.",智能提示不显示任何成员!
     When IntelliSense MemberListFilterInaccessible is True, Input "d." showing nothing.
     */
    }

    //以上问题虽不影响编译,但自动格式化的bug看着不爽,智能提示本来很方便,但在这里bug导致不方便了!



    • 已编辑 Hello.LY 2014年9月29日 7:31 因更新了代码,修改部分注释
    2014年9月29日 1:27

答案

  • 你好:

          我帮你vote了,而且我看到微软的人已经确认是一个bug了。感谢你的分享。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Hello.LY 2014年9月30日 2:07
    2014年9月30日 1:35

全部回复

  • 你好:

          我看到你提的反馈了,但是在我这测的时候没有发现你说的问题。不知道你用的是什么版本的VS,我这边用的是VS2012.截图如下:

      

    可以看到对象d是有两个成员a 和 Test 的。

    Best regards,

    Shu Hu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年9月29日 6:47
  • 版主,谢谢回复,但是你没看清我的智能提示的设置,我用的VS2013,

    选项.文本编辑器.C/C++.高级.IntelliSense.MemberListFilterInaccessible设为True时,输入"d.",智能提示不显示任何成员!

    2014年9月29日 7:27
  • 我用2013试过了,设为True时的确不能显示成员,但设为False的时候,即为允许访问成员列表筛选器时,是可以智能显示的。估计是设为True的时候访问不了成员列表了吧,所以智能提示无效了。图片有点模糊,但还是可以辨认。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年9月29日 9:54
  • 谢谢,我知道设置为False可以显示,但是这个选项的说明大意是“过滤掉无访问权限的成员”!,对于私有或保护成员较多的类,较为有用,智能提示的内容比较清爽,个人比较喜欢!

    但当子类通过using改变基类保护成员为公共访问权限后,智能提示理应显示,但仍被过滤掉了,所以应该是bug!

    • 已建议为答案 Shu 2017 2014年9月30日 1:35
    2014年9月29日 12:13
  • 你好:

          我帮你vote了,而且我看到微软的人已经确认是一个bug了。感谢你的分享。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Hello.LY 2014年9月30日 2:07
    2014年9月30日 1:35
  • 谢谢版主,我也刚看到微软的答复。
    2014年9月30日 2:08