妙用VC++ 6.0编译器说明

开发 后端
Visual Studio系列中产品中,VC++ 6.0编译是最经典的一个版本,虽然后来有Visual Studio .NET 2003,以及2005。

VC++ 6.0编译作为一个高效的.NET程序语言。其混合了函数语言和物件导向程序编制语言,并且***的适用于编程、算法、技术和探索性开发,因此可以在使用的过程当中感受到趣味性和吸引力。
 
和VS 6.0这个产品的成熟相比,VC++ 6.0的编译器的的确确相对来说有些糟糕,其中最被诟病的是对模板技术支持很不好。下面我想做的一件事情,就是向那些继续留恋VC++ 6.0的朋友,介绍一些小花招,来避开VC++ 6.0的一些编译器缺陷。

按照C++标准,这里定义的变量var出了for循环应该被销毁。也就是说下面这段代码是有效的:

  1. for (int i = 0; i < 100; ++i)  
  2.        func();  
  3.    for (int i = 0; i < 100; ++i)  
  4.        func2(); 

而下面这段代码应该编译不过:

  1. for (int i = 0; i < 100; ++i)  
  2.   {  
  3.        if (has_found_it())  
  4.        {  
  5.            handle_find_result();  
  6.            break;  
  7.         }  
  8.   }  
  9.   if (i == 100)  
  10.        do_not_found(); 

然而VC++ 6.0对于***段代码会报变量i重复定义错误,而第二段代码编译通过。为了让VC++ 6.0的for语句看起来符合C++标准,你可以这样做:

  1. if (cond)  
  2.     if (1)  
  3.         for (int i = 0; i < 100; ++i)  
  4.             func1();  
  5.     else  
  6.         func2(); 

你会发现很有趣,这样define一下后,VC++ 6.0编译的for语句完全符合C++标准了!而且由于编译器的优化,Release版本不会增加任何额外的开销。喜欢“钻牛角尖”的朋友可能会说:嗯,不错的主意。但是——为什么不这样做:

  1. template <class T1, class T2> 
  2. T1 func(T2 arg)  
  3. {  
  4.     T1 var;  
  5.     ... // 处理var过程  
  6.     return var;  
  7. }  
  8.  
  9. void test()  
  10. {  
  11.     int result1 = func<int>(1);  
  12.     double result2 = func<double>(2);  
  13. }; 

很抱歉,这种用法VC++ 6.0不支持。让人恼火的是,VC++ 6.0编译时不会提示错误,但是生成的执行代码却很成问题。

【编辑推荐】

  1. C与C++中标准输入实现方式上的一点区别
  2. C++编译器如何对Const常量进行分配存储空间
  3. C++类库设计的基本构思与方法
  4. 玩转C++语言的几种方法
  5. 如何更好的进行C++代码编制
责任编辑:chenqingxiang 来源: NET130
相关推荐

2010-01-27 15:11:17

VC++编译异常

2010-01-18 10:34:21

C++编译器

2010-01-27 17:42:58

VC++开发环境

2010-02-02 17:08:26

Python静态编译器

2010-02-02 17:08:26

Python静态编译器

2010-02-03 15:30:03

IronPython

2010-01-15 16:37:28

Visual C++

2010-01-22 10:44:10

VC++应用程序

2010-01-13 17:12:26

C++编译器

2010-01-08 16:23:11

Ubuntu C++

2021-01-27 09:34:51

Visual C++Dev C++codelite

2010-01-21 09:11:38

C++编译器

2013-03-29 10:02:37

编译器语言编译开发

2017-03-20 18:01:55

编译器汇编

2009-08-10 17:12:54

C#编译器

2010-03-23 11:17:16

Python 动态编译

2010-01-21 17:22:21

VC++

2009-12-11 15:38:40

VS2008编译器

2010-10-20 13:43:37

C++编译器

2019-08-06 08:20:07

编译器工具开发者
点赞
收藏

51CTO技术栈公众号