Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.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
C++ 是时候向VC6编译器说再见了吗?_C++_Compiler Construction_Visual C++ 6 - Fatal编程技术网

C++ 是时候向VC6编译器说再见了吗?

C++ 是时候向VC6编译器说再见了吗?,c++,compiler-construction,visual-c++-6,C++,Compiler Construction,Visual C++ 6,最近,我面临的问题指向VC6编译器 其中很少有: 函数try块不起作用 类内常量不起作用 __函数(获取函数名的宏)不起作用 最新添加的是它不允许将void函数作为for\u的一部分进行传递。 下面的示例不是使用VC6编译器编译的。它表示“错误C2562:'()':'void'函数返回值”。看起来VC6不喜欢为每个函数传递void函数 class Temp { public: Temp(int i):m_ii(i) {} int getI() const {

最近,我面临的问题指向VC6编译器

其中很少有:

  • 函数try块不起作用
  • 类内常量不起作用
  • __函数(获取函数名的宏)不起作用
  • 最新添加的是它不允许将void函数作为for\u的一部分进行传递。
  • 下面的示例不是使用VC6编译器编译的。它表示“错误C2562:'()':'void'函数返回值”。看起来VC6不喜欢为每个函数传递void函数

    class Temp
    {
    public:
        Temp(int i):m_ii(i)
        {}
    
        int getI() const
        {
            return m_ii;
        }
    
        void printWithVoid()
        {
            cout<< "i = "<<m_ii<<endl;
    
        }
        bool printWithBool()
        {
            cout<< "i = "<<m_ii<<endl;
            return true;
        }
    private:
        int m_ii;
    };
    
    int main(void) 
    {
        std::vector<Temp>  arrTempObjects;
    
        arrTempObjects.push_back(Temp(0));
        arrTempObjects.push_back(Temp(2));
    
        //Doesnot work, compiler error 
        std::for_each(arrTempObjects.begin(), arrTempObjects.end(), std::mem_fun_ref(&Temp::printWithVoid));
    
        //Works
        std::for_each(arrTempObjects.begin(), arrTempObjects.end(), std::mem_fun_ref(&Temp::printWithBool));
    
        return 0;
    }
    
    class-Temp
    {
    公众:
    临时(内部一级):临时二级(一级)
    {}
    int getI()常量
    {
    返回m_ii;
    }
    void printWithVoid()
    {
    
    坦白地说,我很难理解为什么你不买一台现代电脑,转而使用VisualStudio2008

    6的STL缺乏,C++标准符合性差,GUI过时。
    <>你不应该让你的竞争对手使用比你更好的工具。< /P> < P> VC6不能做任何现代C++的事情。我记得我以前尝试过使用一个Boost类库,比如Grand,它给了“内部编译器错误”,所以我把它扔进了。

    < P>我从VC++ 6改成代码:::(这是FOSS)几个月前使用g++的时候,我还没有真正回头看。我有点怀念VC++调试器,因为CB中的gdb实现远没有这么流畅,但这就是全部。IDE中的一些东西工作得更好(代码完成、工具提示、依赖性xalculation),编译器显然要好得多


    关于你的点,函数块是一个不被广泛使用的特性,大多数人认为它们是无用的。而函数> <代码>宏不是C++标准的一部分,所以如果移植性是一个问题,你就不应该太依赖它。除非你有一个大的程序要维护,否则,请关闭。


    VC++的快速版本是从Microsoft免费下载的。

    不需要动脑筋的答案是肯定的,而且要尽快。如果成本有问题的话,你可以免费选择VC++Express和Code::Blocks。解决兼容性问题的痛苦不是没有理由不升级,因为你总有一天要升级,而且这只会变得更难。


    我认为可能存在障碍的唯一原因是,如果你有MFC代码,移植起来会很困难/耗时。在这种情况下,你不能使用VC++express(不支持MFC),你必须至少投资VS标准版。这将花费你大约300欧元(取决于你住的地方).

    你可以学会接受VC6s的缺点。如今,它几乎具有某种复古魅力。我们反复提供“最后一个VC6版本”一些图书馆已经向客户提供了多年。很难与准备为备份和维护分支机构支付额外费用的客户争辩。但在某个时候,我们备份在较新的VCs中开发的较新功能的成本将超过其最终升级的成本(特别是当更多的增强和Intel TBB潜入代码库时)。或者至少我希望会发生这样的事情!最坏的情况是,它会发生,就像脆弱的C++0x支持出现一样,我们将在10年内一直支持他们…

    一般规则似乎是,新版本是一种升级,因此是值得的

    然而,你必须为它选择正确的时间,有这么多的错误被修复,但是你需要知道新的错误和标准的变化

    为升级留出时间。 升级编译器版本本身很可能是一个项目,在升级之前,确保您有稳定的代码和良好的测试,当您完成升级时,确保它仍然可以正常工作


    当你开始为Vista开发时,你可能会被迫升级,因为VC6不容易提供代码签名,而且redist的格式也不是Vista喜欢的。(至少需要VC2K5)

    你会很快更新操作系统吗?当我研究将我们的应用移动到Vista时,我发现Vista在VS2005之前没有正式支持任何东西(除了VB 6),并且有一个长达一页的VS 2005可能出现的小问题列表,这些小问题可能会影响您,也可能不会影响您。我建议延迟到VS 2008 SP1可用时(即VS 2008真正可用时),然后首先进行编译器转换


    如果该项目是为少数在旧NT机器上单独运行它的客户而设计的,那么您可能希望将其保持在VS 6。如果您是为了任何形式的一般消费而销售它,那么您需要在某个时候使其与Vista兼容(或7兼容,或其他),您需要升级。

    好吧,事情是这样的。VC6编译器糟透了。不过……IDE相当不错

    VS2005具有更好的源代码管理支持。否则,它的调试速度会慢得多,输出窗格会在插入输出行时呈指数级衰减(这是什么绝对垃圾编码?),帮助系统的速度会慢很多倍,调试并继续(可能是微软在其他IDE上的最佳功能)是相当多的破碎

    .NET?当然,VS20xx是唯一的选择。但是,对于一个坚持使用VC6/MFC(用于嵌入式系统接口等)的小客户机,我实际上很喜欢使用VC6。它速度很快

    2008年?我想…但我的客户迁移需要一段时间。还没有人迁移

    是时候向VC6说再见了吗 编译程序


    是的。

    我想这就是为什么Windows上这么多应用程序很糟糕的原因,因为人们仍然使用VC6。为什么要把坏掉的、从未维护过的MFC甚至Win32搞得一团糟,因为他们的Widgets和Qt4比MFC好得多,你甚至可以免费使用Visual Studio 2005+

    不,是时候向它说再见了艾德。以下是一些原因:

    • 有免费的、符合标准的编译器可供使用,这两种编译器都来自Microsoft