代码之家  ›  专栏  ›  技术社区  ›  Nick

VisualC++中的缺失/期望特征[关闭]

  •  0
  • Nick  · 技术社区  · 17 年前

    我找不到另一个已经被问到的话题,所以我要开始一个…如果有一个,请随意链接并关闭它。

    你觉得Visual C++最缺少什么特性?

    微软在过去的两个版本中为Cy/VB.NET开发添加了漂亮的特性,但是C++有点被忽略了。我没有太多的经验与其他IDE的,但一定有一些进展,在C++ IDE开发在过去的五年中,人们喜欢。我非常好奇,人们认为是VisualC++中缺少的最突出的特征。

    笔记:

    • 不,我不为微软工作,我只是经常用他们的东西,希望能让它变得更好
    • 这是特定于本地C++开发的,虽然我认为C++/CLI也应该是公平的游戏。
    • 可以随意添加多个功能作为单独的条目;这样人们就可以投票选出他们最缺乏的功能
    14 回复  |  直到 16 年前
        1
  •  13
  •   JesperE    17 年前

    重构。

        2
  •  12
  •   Konrad Rudolph    17 年前

    我似乎是地球上为数不多的使用这个的人之一,但我真的很希望微软能实现这些关键字 and , or not 事实上,在他们的编译器和IDE中,所有的ISO646都是正确的,但这三个是唯一真正有用的。

    他们有很多“好”的理由不去实现它们“不是一个破坏性的bug,没有多少人使用它们,但这是一个很好的借口”。 小的 他们似乎太粗心了,只是出于怨恨才不执行。

    对于不知道我在说什么的人:

    // This is valid C++
    bool x = not (a and b) or c;
    
    // … and is equivalent to this:
    bool x = ! (a && b) || c;
    

    关键字在标准标题中也定义为宏 ciso646 对于不立即支持上述代码但符合标准的编译器 必须 支持此代码。

        3
  •  5
  •   Michael Burr    17 年前

    这与ide无关,但与语言有关。我希望ms至少支持c99的一些更改。明确地:

    • stdint.h inttypes.h . 我有 我自己的版本所以不是很大 为我做交易,但女士真的应该 很久以前就放进去了。 他们绝对不需要改变 给编译器。
    • 混合声明/代码和 inline 在C. 他们已经为C++做了这件事,为什么不让我用C做呢?
    • _Pragma() . 他们已经知道了 非常相似的东西( _pragma() 我想),但这已经足够不同了 它需要 #ifdef 去工作。
        4
  •  2
  •   Kevin    17 年前

    如果一行中存在多个表达式(由序列点分隔),则允许一次单步执行单个语句。示例:在for循环中,将初始化和比较作为两个单独的语句逐步进行(在第一次传递时),将比较和增量作为两个单独的语句逐步进行(在后续传递时)。

    单步执行宏。

        5
  •  2
  •   oz10    17 年前

    既然我们在做梦…你提到 Template Meta Programming (tmp),如果有一个tmp调试器,那将是致命的;)

        6
  •  2
  •   Gautam Jain    17 年前

    如果我在头文件中声明一组函数,只需单击一次,所有函数都将自动扩展到其.cpp文件中。反之亦然。我不确定是否已经有了这个宏。

        7
  •  2
  •   korona    17 年前

    代码的自动生成、GETS/SETTER等,很像Java的IntLIJ思想。

    编辑:并且还添加了Visual Asvices X当前提供的几乎所有东西。在Visual C++中,这是绝对必要的。

        8
  •  1
  •   Filip Frącz    16 年前

    如果Intellisense最终得到修复,那就太好了。当我右键单击“代码”窗口中的任何位置时,我的VS2008将冻结10多分钟。 C.V/VB.NET获得了所有智能化的爱,而不是C++的情况。

        9
  •  1
  •   Peter Mortensen icecrime    16 年前

    VisualC++编译器缺少对寄存器的支持。 关键字。它只是忽略了它。

    在应用程序的热点中,重要的是 能够指导编译器做正确的事情。

    或者正如詹姆斯·普拉特所说:

    “register关键字被忽略。这对于生成快速代码至关重要,因为编译器并不总是选择正确的变量保存在寄存器中。”

    register关键字是一个强大的工具,可以被滥用 可能会影响便携性,但我认为 支持。

    出于某种原因,微软不允许我们 控制。主要的论点是编译器更聪明 而不是软件工程师。这根本不是真的 病例。如果Metroworks也用同样的论据 PowerPC/Macintosh的C++编译器 能够将面向用户的应用程序速度提高2倍 (主操作从4秒到2秒) 将重要变量分配给寄存器,消除 主存储器访问。只花了一个小时, 通过反汇编生成的代码和 消除内存访问。

        10
  •  0
  •   Nick    17 年前

    我认为VC++迫切需要:

    • 一步到位的能力

    通过未记录的nativede子键(google子键名称)可以获得一个跨步功能,这对于普通的构造函数等非常有用。但是,随着boost、tr1、com抽象和其他多步传递代码变得越来越常见,vc++真的可以使用在调试器中自动单步执行函数的功能。请注意,这是作为C属性存在的一个属性,但它需要为本机C++ IMHO,并作为一个文件化的,支持的能力。

        11
  •  0
  •   Nick    17 年前

    除了单步执行宏之外,我想知道是否有人认为编译器最终需要支持单步执行模板扩展功能?随着元编程变得越来越标准,模板变得越来越复杂,编译时的评估,这可能成为一个问题。

        12
  •  0
  •   Nick    17 年前

    另一件我个人喜欢的事情是类图的显示方式,类似于.NET语言的显示方式。我认为它绝对有助于可视化您试图可视化的新代码项目。

        13
  •  0
  •   Nick    16 年前

    想到了我个人想要的另一件事:

    按名称中断函数的能力,不管它是从何处调用的,也不管它是从何处定义的。

    在代码中分解函数很容易,但我经常发现自己想要分解没有源代码的函数(例如:os-api函数),并且不可能跟踪代码和库代码中调用函数的每个实例。vs有能力破坏一个函数,但它似乎不适用于不在代码中的函数。

        14
  •  0
  •   Tim    16 年前

    能够设置编译线程的优先级。